Hi Try to do it in pure Camel, eg using seda, direct, vm etc and not the NMR or SMX.
On Thu, Mar 4, 2010 at 2:38 PM, lekkie <[email protected]> wrote: > > I saw this and I completely understand it. > my problem is not that router1 is waiting for initial request to complete > (I'd like it to wait as my request is an InOut), but, I will like it to > accept another request and respond to the appropriate endpoint (the one that > initiated the request). That does not seem to be happening. > > What is happening is that, router1 receives an initial request (and keep > waiting for a response - which is fine), and receives another request and > sends the output message from initial request as a response to the second > request. Thats confusing, but it was what I got when I turned on the trace > on the router. > > kr. > > > > > Claus Ibsen-2 wrote: >> >> Well if you take your time to read the VM wiki page, you will notice >> it extends the SEDA which offers options to configure the blocking >> >> http://camel.apache.org/vm >> http://camel.apache.org/seda.html >> >> You can use waitForTaskToComplete to control the blocking behavior >> >> >> On Thu, Mar 4, 2010 at 2:17 PM, lekkie <[email protected]> wrote: >>> >>> Are you saying that you route to "route1" 2 times? eg kinda like in a >>> circle? >>> >>> You are right. The idea is to make router1 (which is a dynamic recipient >>> EIP) to take messages and route to whichever endpoint. It is suppose to >>> be a >>> central endpoint. Collect msges route to the nxt endpoint and wait to >>> collect response and send to original requester. >>> >>> I didnt expect the router to block when it has not got response from >>> initial >>> request (which is why I used vm). Is there a non blocking endpoint that >>> can >>> do this? >>> >>> I tried this and it worked. >>> >>> <camelContext id="camel" xmlns="http://camel.apache.org/schema/spring" >>> trace="true"> >>> <route> >>> <from uri="nmr:consumerEndPoint"/> >>> <loadBalance ref="roundRobinRef"> >>> <to uri="vm:router1"/> >>> <to uri="vm:router2"/> >>> </loadBalance> >>> </route> >>> </camelContext> >>> >>> <camelContext id="camel" xmlns="http://camel.apache.org/schema/spring" >>> trace="true"> >>> <route> >>> <from uri="nmr:someIntermediateEndPoint "/> >>> <loadBalance ref="roundRobinRef"> >>> <to uri="vm:router2"/> >>> <to uri="vm:router1"/> >>> </loadBalance> >>> </route> >>> </camelContext> >>> >>> >>> >>> Regards. >>> >>> >>> Claus Ibsen-2 wrote: >>>> >>>> On Thu, Mar 4, 2010 at 8:50 AM, lekkie <[email protected]> wrote: >>>>> >>>>> I have a use case that requires a certain endpoint to be re-used. Lets >>>>> say >>>>> the re-usable endpoint is called router1. >>>>> >>>>> The flow below causes a blockage on my route and leads to camel >>>>> throwing >>>>> exception. >>>>> >>>>> consumerEndPoint -> router1 -> someIntermediateEndPoint -> router1`-> >>>>> someProviderEndpoint ........ >>>>> >>>> >>>> Are you saying that you route to "route1" 2 times? eg kinda like in a >>>> circle? >>>> >>>> And what does your route1 recipient list do? >>>> >>>> All together I suggest to make your use case as simple as possible, to >>>> get something working. >>>> And then build from there. >>>> >>>> And you can change the MEP if you need. >>>> >>>>> >>>>> This flow is an InOut exchange flow. What is happening is that, because >>>>> the >>>>> first message passes through router1 and it is still waiting for a >>>>> response, >>>>> router1` will wait forever. I think camel throws the exception below >>>>> >>>>> 08:29:12,569 | INFO | oLogger-thread-1 | Tracer >>>>> | >>>>> rg.apache.camel.processor.Logger 88 | >>>>> c66c0dd3-657a-4508-9295-c6f6b6d64a02 >>>>>>>> (route20) OnException[ExchangeTimedOutException] --> transform[ >>>>> >>>>> 08:29:12,569 | ERROR | oLogger-thread-1 | DefaultErrorHandler >>>>> | >>>>> rg.apache.camel.processor.Logger 202 | Failed delivery for exchangeId: >>>>> c66c0dd3-657a-4508-9295-c6f6b6d64a02. Processed by failure processor: >>>>> Channel[Transform( >>>>> >>>>> 08:29:33,653 | INFO | saction-thread-1 | Tracer >>>>> | >>>>> rg.apache.camel.processor.Logger 88 | >>>>> c36c48b5-e18d-498e-9fed-b340e0baeb05 >>>>>>>> vm://router1 --> OnException[ExchangeTimedOutException] <<< >>>>> Pattern:InOut, Headers:{operationName=null, nmrMessage=Message []}, >>>>> BodyType:String, Body: >>>>> >>>>> 08:29:33,653 | INFO | saction-thread-1 | Tracer >>>>> | >>>>> rg.apache.camel.processor.Logger 88 | >>>>> c36c48b5-e18d-498e-9fed-b340e0baeb05 >>>>>>>> (route23) OnException[ExchangeTimedOutException] --> transform[ >>>>> >>>>> 8:29:33,653 | ERROR | saction-thread-1 | DefaultErrorHandler >>>>> | >>>>> rg.apache.camel.processor.Logger 202 | Failed delivery for exchangeId: >>>>> c36c48b5-e18d-498e-9fed-b340e0baeb05. Processed by failure processor: >>>>> Channel[ >>>>> >>>>> >>>>> Loadbalancer is not resolving this as it still ends up sending to same >>>>> router. >>>>> >>>>> See my camel snippets below: >>>>> >>>>> <camelContext id="camel" xmlns="http://camel.apache.org/schema/spring" >>>>> trace="true"> >>>>> <route> >>>>> <from uri="nmr:consumerEndPoint"/> >>>>> <loadBalance ref="roundRobinRef"> >>>>> <to uri="vm:router1"/> >>>>> <to uri="vm:router2"/> >>>>> </loadBalance> >>>>> </route> >>>>> </camelContext> >>>>> >>>>> <camelContext id="camel" xmlns="http://camel.apache.org/schema/spring" >>>>> trace="true"> >>>>> <route> >>>>> <from uri="nmr:someIntermediateEndPoint "/> >>>>> <loadBalance ref="roundRobinRef"> >>>>> <to uri="vm:router1"/> >>>>> <to uri="vm:router2"/> >>>>> </loadBalance> >>>>> </route> >>>>> </camelContext> >>>>> >>>>> <camelContext id="camel" xmlns="http://camel.apache.org/schema/spring" >>>>> trace="true"> >>>>> <route> >>>>> <from uri="nmr:someProviderEndPoint"/> >>>>> <to uri="mock:whatever"/> >>>>> </route> >>>>> </camelContext> >>>>> >>>>> <camelContext id="camel" xmlns="http://camel.apache.org/schema/spring" >>>>> trace="true"> >>>>> <route> >>>>> <from uri="vm:router1"/> >>>>> <bean ref="router1ProcessorRecipientList" >>>>> method="route"/> >>>>> </route> >>>>> </camelContext> >>>>> >>>>> <camelContext id="camel" xmlns="http://camel.apache.org/schema/spring" >>>>> trace="true"> >>>>> <route> >>>>> <from uri="vm:router2"/> >>>>> <bean ref="router2ProcessorRecipientList" >>>>> method="route"/> >>>>> </route> >>>>> </camelContext> >>>>> >>>>> >>>>> >>>>> What EIP would be the most appropriate for this scenario? >>>>> >>>>> kr. >>>>> -- >>>>> View this message in context: >>>>> http://old.nabble.com/Blocked-endpoints%3A-What-EIP-%27d-be-most-appropriate--tp27777606p27777606.html >>>>> Sent from the Camel - Users mailing list archive at Nabble.com. >>>>> >>>>> >>>> >>>> >>>> >>>> -- >>>> Claus Ibsen >>>> Apache Camel Committer >>>> >>>> Author of Camel in Action: http://www.manning.com/ibsen/ >>>> Open Source Integration: http://fusesource.com >>>> Blog: http://davsclaus.blogspot.com/ >>>> Twitter: http://twitter.com/davsclaus >>>> >>>> >>> >>> -- >>> View this message in context: >>> http://old.nabble.com/Blocked-endpoints%3A-What-EIP-%27d-be-most-appropriate--tp27777606p27780598.html >>> Sent from the Camel - Users mailing list archive at Nabble.com. >>> >>> >> >> >> >> -- >> Claus Ibsen >> Apache Camel Committer >> >> Author of Camel in Action: http://www.manning.com/ibsen/ >> Open Source Integration: http://fusesource.com >> Blog: http://davsclaus.blogspot.com/ >> Twitter: http://twitter.com/davsclaus >> >> > > -- > View this message in context: > http://old.nabble.com/Blocked-endpoints%3A-What-EIP-%27d-be-most-appropriate--tp27777606p27780828.html > Sent from the Camel - Users mailing list archive at Nabble.com. > > -- Claus Ibsen Apache Camel Committer Author of Camel in Action: http://www.manning.com/ibsen/ Open Source Integration: http://fusesource.com Blog: http://davsclaus.blogspot.com/ Twitter: http://twitter.com/davsclaus
