I was able to resolve the problem. In my jms config I had used the
option useMessageIdAsCorrelationId. As the forwarded message has a
different correlation id than the original message the client could not
process the response. Besides that I had a typo in the config I posted.
On the other hand it seems to me the documentation that says the
JMSReplyTo is cleared is not correct. The JMSReplyTo header was
correctly set on the forwarded messsage. Should I correct this in the
documentation?
Greetings
Christian
Am 26.02.2010 16:54, schrieb Schneider Christian:
Hi,
I have got two queues that listen for SOAP/JMS calls. The calls are
request/reply and expect a reply on a temporary queue.
I want to feed requests from both queues into a common queue to serialize them.
Then I want to listen to the comon queue and process the requests.
The problem is that the replyTo header does not seem to get through to the
common queue. So the jms Endpoint there is not able to send the reply back.
In the route I set disableReplyTo as I don“t want this route to reply to the
sender or expect a reply. Still it should send the replyTo header as the
listener on the common queue should send the reply.
The jms component documentation says that the jms component will clear the
JMSReplyTo. In my case I really need it though. Any idea how to solve this?
Greetings
Christian
from("jms://" + destCustomerService + "?disableReplyTo=true") //
.setHeader(HEADER_ORIG_DEST, constant(destCustomerService)) //
.to("jms://" + destCommonQueue + "?disableReplyTo=true");
from("jms://" + destDealService + "?disableReplyTo=true") //
.setHeader(HEADER_ORIG_DEST, constant(destDealService)) //
.to("jms://" + destCommonQueue + "?disableReplyTo=true");
from("jms://" + destCommonQueue) //
.process(new MyProcessor())
.choice() //
.when(header(HEADER_ORIG_DEST).isEqualTo(destCustomerService)).to("direct:customerService")
//
.when(header(HEADER_ORIG_DEST).isEqualTo(destCustomerService)).to("direct:dealService")
//
.otherwise().to("jms://queue.deadLetter")
.end();