camel-users mailing list archives

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

rest("/from-smtp/")
        .post()
        .type(EmailedSmsRequest.class)
        .to("direct:fromSmtp");

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 <morgan.hautman@gmail.com>
wrote:

> 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 <morgan.hautman@gmail.com>
>> wrote:
>>
>>> Claus,
>>>
>>> Is their any way a queue (using activemq) could respond , like a
>>> request-reply mechanism?
>>>
>>> http://camel.apache.org/request-reply.html
>>>
>>>  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 <james.mk.green@gmail.com>
>>>> 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
>>>>>
>>>>
>>>>
>>>>
>>
>>
>

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