camel-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From James Green <>
Subject Re: REST InOut with JMS InOnly
Date Tue, 03 Feb 2015 13:30:02 GMT
Nope :)


direct:fromSmtp routes onward to direct:router. direct:router sends it
onwards to jms:queue:foo asynchronously. The route that reads
from("direct:router") is intended for be fully re-usable and has multiple
public interfaces sending messages into it but is not expected to reply at
all (except for raising exceptions of course).

Beyond direct:fromSmtp routing to direct:router, I want to set the OUT part
of the exchange so that the rest component knows what to send back to the
http client.

I suspect I can wiretap() to split the messaging across two routes - one to
direct:router and the other to processing that provides the OUT part of the
exchange however it doesn't feel entirely natural hence I didn't think of
it myself.

[ I have not yet tried wiretap in the code I'm asking the question about,
will do shortly ]

On 3 February 2015 at 13:20, Morgan Hautman <>

> Yes I understand we can encounter a timeout when we don't respond to
> http/rest because it's synchronous.
> But I think what James means is :
> 1st route:
> from(cxf:...).to(activemq:bar)
> 2nd route
> from(activemq: bar).to(processing)
> The first route sends a message to the second route through activemq and
> waits for the second route to process the message and the second route
> respond to the first route who will answer to the client what "route2"
> responded. (timeout or not)
> Hope It's comprehensive.
> PS: I'm not in James team, I just try to help and understand a problem I
> had myself some months ago but didn't look further.
> On 3/02/2015 13:54, Claus Ibsen wrote:
>> On Tue, Feb 3, 2015 at 1:27 PM, Morgan Hautman <>
>> wrote:
>>> Claus,
>>> Is their any way a queue (using activemq) could respond , like a
>>> request-reply mechanism?
>>>  Not sure I follow. Camel can do InOnly and InOut over JMS. So yeah
>> both is possible.
>> Just mind that a client like HTTP / REST is synchronous in that sense
>> the client awaits a response, so whether that is just a OK or to
>> respond with some new data, then that needs to happen, and occurs when
>> the exchange is done being routed, and the control is back at the
>> consumer.
>>  On 3/02/2015 13:14, Claus Ibsen wrote:
>>>> Hi
>>>> You can send the message to the JMS as InOnly or use WireTap
>>>> On Tue, Feb 3, 2015 at 12:27 PM, James Green <>
>>>> wrote:
>>>>> I have two routes:
>>>>> 1. A rest dsl accepting data from HTTP clients and sending it to the
>>>>> route
>>>>> below before replying to the client
>>>>> 2. A "backend" route that receives an Exchange and sends it to a JMS
>>>>> queue
>>>>> By default, although the JMS queue gets the message, a stack trace
>>>>> occurs
>>>>> because the queue did not respond. So I set the backend route to be
>>>>> InOnly
>>>>> and now no stack trace occurs.
>>>>> However, the remaining part of my rest dsl route does not execute.
>>>>> So how do I accept some REST request, fire off an asynchronous JMS
>>>>> message,
>>>>> and reply to the HTTP client?
>>>>> Thanks,
>>>>> James

  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message