Hi sujin sr
1. Don't worry, Camel is automatically copying the headers for you.
Just send the message on to the replyQueue
.from("activemq:queue:DataRequestQueue")
.to("activemq:queue:DataReplyQueue")
2. Not sure if I understand you correct: you mean how can each sender (if there
are multiple) consume only its own message replies?
Use message selectors (https://activemq.apache.org/selectors.html). Each sender
can for example set a header 'sender' with a unique ID. It can then use a
message selector to listen to the DataReplyQueue, but consume only the messages
with its own sender-ID.
Cheers
Stephan
-----Ursprüngliche Nachricht-----
Von: sujin sr <[email protected]>
Gesendet: Mittwoch, 7. August 2019 09:37
An: [email protected]
Betreff: Re: InOut exchange pattern on Transactional JMS endpoint not working
Thanks Claus Ibsen for the response.
So If I process replyQueue via a separate route I am wondering about the below
two points
1. How I can transfer requestMessage headers values to the replyMessage
headers.
2. I want to get the replyMessages only send from my producer alone, how to
listen on specific correlation ids using camel approach.
This use case will occur when the same request/reply queue can have other
jms producers and consumers.
Kindly suggest some ideas.
On Wed, 7 Aug 2019 at 12:55, Claus Ibsen <[email protected]> wrote:
> Hi
>
> You cannot do request/reply via reply queues with InOut and with
> transactions as its a chicken/egg situation.
> The message that is sent to the request queue (for req/reply) is not
> committed until the transaction is committed and therefore the
> received cannot "see" the message.
>
> On Wed, Aug 7, 2019 at 9:05 AM sujin sr <[email protected]> wrote:
> >
> > Hi,
> >
> > I have a use case where two jms queues are available those are
> > DataRequestQueue and DataReplyQueue. Where If I sent a message to
> > the DataRequestQueue MDB will process the message and send the
> > response to DataReplyQueue.
> >
> > I have used Camel to send the message and receive the response. I
> > have
> used
> > InOut Exchange pattern in camel to send and receive the response back.
> >
> > Jms endpoint I am using is Transactional JMS endpoint, transaction
> manager
> > configured in spring bean.
> >
> >
> .to("jms:queue:DataRequestQueue?replyTo=DataReplyQueue&exchangePattern
> =InOut&requestTimeout=60s")
> >
> >
> > When I try to send the message to the request queue using InOut
> > exchange camel throw ExchangeTimedOutException, but if I remove
> > transaction
> manager
> > from the spring bean it working fine I able to get the response in
> > the reply queue.
> > I have also tried to create a separate jms component bean without
> > transaction manager for InOut exchange alone but it was also not working.
> >
> > Kindly suggest some idea to make the camel route work fine.
> >
> >
> https://access.redhat.com/documentation/en-us/red_hat_jboss_fuse/6.3/h
> tml/transaction_guide/fmrtxnjmssynchronous
> >
> >
> > This article suggested to use a separate queue for request and
> > response, but I cannot split the route and make the route async.
> >
> > Thanks.
>
>
>
> --
> Claus Ibsen
> -----------------
> http://davsclaus.com @davsclaus
> Camel in Action 2: https://www.manning.com/ibsen2
>