Hi Everyone,

I have a route where the final destination is:
activemq:queue:soapRequestQ?exchangePattern=InOut&asyncConsumer=true&useMessageIDAsCorrelationID=false&replyTo=responseQ&replyToType=Shared&requestTimeout=30000&transacted=false

In another route I have following configuration:
<route id="soapReqQToResQ">
                <from uri="activemq:queue:soapRequestQ"/>
                <process ref="headerProcessor"/>
                <process ref="openAPISimulator"/>
                
</route>

Using this configuration, the activemq inout messaging works perfectly fine
and I can achieve non blocking http request-response kind of behaviour using
this.

But when I try to do what second route is doing using a stand along activemq
java client, the inout message times out after configured time for not
getting any response. This is my java client part of code:
MessageConsumer consumer = session.createConsumer(request);// where request
is soapRequestQ
MessageProducer producer = session.createProducer(response);// where
response is responseQ

Message message = consumer.receive(1000);
if(message2 != null) {
                                ActiveMQMapMessage activeMQMapMessage = 
(ActiveMQMapMessage) message;
                                Map content = 
activeMQMapMessage.getContentMap();
                                System.out.println("Received Message 
soapRequestQ: " + content);
                                Map response = new HashMap();
                                response.put("returnCode", "0");
                                response.put("errorKey", "SUCCESS");
                                                                
                                try {
                                // Convert Map to byte array
                            ByteArrayOutputStream byteOut = new 
ByteArrayOutputStream();
                            ObjectOutputStream out = new 
ObjectOutputStream(byteOut);
                                out.writeObject(response);
                                ByteSequence byteSequence = new 
ByteSequence(byteOut.toByteArray());
                                ActiveMQMapMessage responseMapMessage = new 
ActiveMQMapMessage();
                                responseMapMessage.setContent(byteSequence);
                                responseMapMessage.setJMSDestination(response);
                        
responseMapMessage.setJMSCorrelationID(activeMQMapMessage.getJMSCorrelationID());
                        
responseMapMessage.setCorrelationId(activeMQMapMessage.getCorrelationId());
                                
                                producer.send(responseMapMessage);
                                
                                } catch (IOException e) {
                                        // TODO Auto-generated catch block
                                        e.printStackTrace();
                                }

I can see the message in responseQ. But it is not pickedup by camel for
InOut response.
Am I missing anything?
How the request-response in InOut pattern is connected? How does Camel auto
connects request and response in jms? I thought that JMSCorelationId was
enough for that. But it doesn't seems to be that way.
Please advice.
Thanks.

BR!
Yogesh



--
View this message in context: 
http://camel.465427.n5.nabble.com/ActiveMQ-InOut-JMS-messaging-with-external-system-tp5757630.html
Sent from the Camel - Users mailing list archive at Nabble.com.

Reply via email to