[ https://issues.apache.org/activemq/browse/CAMEL-1773?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Claus Ibsen resolved CAMEL-1773. -------------------------------- Resolution: Working as Designed Fix Version/s: 2.0.0 Assignee: Claus Ibsen > JMSReplyTo is not set when explicitly set by user > ------------------------------------------------- > > Key: CAMEL-1773 > URL: https://issues.apache.org/activemq/browse/CAMEL-1773 > Project: Apache Camel > Issue Type: Bug > Components: camel-jms > Affects Versions: 2.0-M2 > Environment: jdk6u13 jdk6u14 > Reporter: Eric Bouer > Assignee: Claus Ibsen > Fix For: 2.0.0 > > > By default camel sets the JMSReplyTo for InOut messages. > A user should be able to customize the JMSReplyTo property. > Camel always overrides the JMSReplyTo and sets it to a temp-queue regardless > user settings. > =========== code Snippet ============= > package com.mycompany.CamelExample; > import javax.jms.ConnectionFactory; > import org.apache.activemq.ActiveMQConnectionFactory; > import org.apache.activemq.camel.component.ActiveMQComponent; > import org.apache.camel.CamelContext; > import org.apache.camel.Exchange; > import org.apache.camel.Processor; > import org.apache.camel.ProducerTemplate; > import org.apache.camel.builder.RouteBuilder; > import org.apache.camel.component.jms.JmsConstants; > import org.apache.camel.impl.DefaultCamelContext; > public final class App { > > public static void main(String args[]) throws Exception { > CamelContext context = new DefaultCamelContext(); > ConnectionFactory connectionFactory = new > ActiveMQConnectionFactory("tcp://amq1:61616"); > final String TEST_QUEUE_1 = "test-jms:queue:test1"; > final String TEST_QUEUE_2 = "test-jms:queue:test2"; > final String REPLY_QUEUE = "queue:myResponseQueue"; > context.addComponent("test-jms", > ActiveMQComponent.jmsComponent(connectionFactory)); > context.addRoutes(new RouteBuilder() { > public void configure() { > from(TEST_QUEUE_1) > .process(new Processor() { public void process(Exchange > exchange) throws Exception { > System.out.println(exchange.getIn().getBody()); > exchange.getOut().setBody("Hello again"); > > exchange.setProperty(JmsConstants.JMS_REPLY_DESTINATION, REPLY_QUEUE); > } > }) > .to(TEST_QUEUE_2); > > from(TEST_QUEUE_2) > .process(new Processor() { public void > process(Exchange exchange) throws Exception { > String body = (String) exchange.getIn().getBody(); > System.out.println("direct:a got process" + > body.toString()); > exchange.getIn().setBody("lolo"); > System.out.println(exchange.getIn().getHeaders()); > exchange.getIn().setBody("Bye World"); > // the reply destination is set as a property on the > exchange while we process it > String ReplyTo = > exchange.getProperty(JmsConstants.JMS_REPLY_DESTINATION).toString(); > if (!ReplyTo.equalsIgnoreCase(REPLY_QUEUE)) { > //assert > throw new Exception("JMSReplyTo is not set > correctly: got:" + ReplyTo > + " Expexting:" + REPLY_QUEUE); > } > }}); > > }}); > ProducerTemplate template = context.createProducerTemplate(); > context.start(); > Thread.sleep(2000); > String requestBody = (String) template.requestBody(TEST_QUEUE_1, > "Hello world", String.class); > } > } > ======== Log ============== > 2:19:41,559 INFO DefaultCamelContext:135 - JMX enabled. Using > InstrumentationLifecycleStrategy. > 22:19:41,656 INFO DefaultCamelContext:875 - Apache Camel 2.0-M2 > (CamelContext:camel-1) is starting > 22:19:42,251 INFO DefaultCamelContext:868 - Apache Camel 2.0-M2 > (CamelContext:camel-1) started > 22:19:44,453 DEBUG JmsProducer:202 - Using JMS API v1.1 > 22:19:44,515 DEBUG JmsConfiguration$CamelJmsTemplate:469 - Executing callback > on JMS Session: ActiveMQSession > {id=ID:niso-42103-1246303182016-0:3:1,started=false} > 22:19:44,519 DEBUG JmsBinding:370 - Using JmsMessageType: Text > 22:19:44,525 DEBUG JmsProducer:188 - Endpoint[test-jms:queue:test1] sending > JMS message: ActiveMQTextMessage {commandId = 0, responseRequired = false, > messageId = null, originalDestination = null, originalTransactionId = null, > producerId = null, destination = null, transactionId = null, expiration = 0, > timestamp = 0, arrival = 0, brokerInTime = 0, brokerOutTime = 0, > correlationId = ID-niso-45344-1246303184258-2-0, replyTo = > temp-queue://ID:niso-42103-1246303182016-0:2:1, persistent = false, type = > null, priority = 0, groupID = null, groupSequence = 0, targetConsumerId = > null, compressed = false, userID = null, content = null, marshalledProperties > = null, dataStructure = null, redeliveryCounter = 0, size = 0, properties = > null, readOnlyProperties = false, readOnlyBody = false, droppable = false, > text = Hello world} > 22:19:44,527 DEBUG JmsConfiguration$CamelJmsTemplate:202 - Sending created > message: ActiveMQTextMessage {commandId = 0, responseRequired = false, > messageId = null, originalDestination = null, originalTransactionId = null, > producerId = null, destination = null, transactionId = null, expiration = 0, > timestamp = 0, arrival = 0, brokerInTime = 0, brokerOutTime = 0, > correlationId = ID-niso-45344-1246303184258-2-0, replyTo = > temp-queue://ID:niso-42103-1246303182016-0:2:1, persistent = false, type = > null, priority = 0, groupID = null, groupSequence = 0, targetConsumerId = > null, compressed = false, userID = null, content = null, marshalledProperties > = null, dataStructure = null, redeliveryCounter = 0, size = 0, properties = > null, readOnlyProperties = false, readOnlyBody = false, droppable = false, > text = Hello world} > 22:19:44,564 DEBUG EndpointMessageListener:66 - > Endpoint[test-jms:queue:test1] consumer receiving JMS message: > ActiveMQTextMessage {commandId = 5, responseRequired = true, messageId = > ID:niso-42103-1246303182016-0:3:1:1:1, originalDestination = null, > originalTransactionId = null, producerId = > ID:niso-42103-1246303182016-0:3:1:1, destination = queue://test1, > transactionId = null, expiration = 1246303204528, timestamp = 1246303184528, > arrival = 0, brokerInTime = 1246303121068, brokerOutTime = 1246303121099, > correlationId = ID-niso-45344-1246303184258-2-0, replyTo = > temp-queue://ID:niso-42103-1246303182016-0:2:1, persistent = true, type = > null, priority = 4, groupID = null, groupSequence = 0, targetConsumerId = > null, compressed = false, userID = null, content = null, marshalledProperties > = null, dataStructure = null, redeliveryCounter = 0, size = 0, properties = > null, readOnlyProperties = true, readOnlyBody = true, droppable = false, text > = Hello world} > Hello world > 22:19:44,853 DEBUG JmsProducer:202 - Using JMS API v1.1 > 22:19:44,853 DEBUG JmsConfiguration$CamelJmsTemplate:469 - Executing callback > on JMS Session: ActiveMQSession > {id=ID:niso-42103-1246303182016-0:1:1,started=true} > 22:19:44,854 DEBUG JmsBinding:370 - Using JmsMessageType: Text > 22:19:44,854 DEBUG JmsProducer:188 - Endpoint[test-jms:queue:test2] sending > JMS message: ActiveMQTextMessage {commandId = 0, responseRequired = false, > messageId = null, originalDestination = null, originalTransactionId = null, > producerId = null, destination = null, transactionId = null, expiration = 0, > timestamp = 0, arrival = 0, brokerInTime = 0, brokerOutTime = 0, > correlationId = ID-niso-45344-1246303184258-4-0, replyTo = > temp-queue://ID:niso-42103-1246303182016-0:4:1, persistent = false, type = > null, priority = 0, groupID = null, groupSequence = 0, targetConsumerId = > null, compressed = false, userID = null, content = null, marshalledProperties > = null, dataStructure = null, redeliveryCounter = 0, size = 0, properties = > null, readOnlyProperties = false, readOnlyBody = false, droppable = false, > text = Hello again} > 22:19:44,855 DEBUG JmsConfiguration$CamelJmsTemplate:202 - Sending created > message: ActiveMQTextMessage {commandId = 0, responseRequired = false, > messageId = null, originalDestination = null, originalTransactionId = null, > producerId = null, destination = null, transactionId = null, expiration = 0, > timestamp = 0, arrival = 0, brokerInTime = 0, brokerOutTime = 0, > correlationId = ID-niso-45344-1246303184258-4-0, replyTo = > temp-queue://ID:niso-42103-1246303182016-0:4:1, persistent = false, type = > null, priority = 0, groupID = null, groupSequence = 0, targetConsumerId = > null, compressed = false, userID = null, content = null, marshalledProperties > = null, dataStructure = null, redeliveryCounter = 0, size = 0, properties = > null, readOnlyProperties = false, readOnlyBody = false, droppable = false, > text = Hello again} > 22:19:44,895 DEBUG EndpointMessageListener:66 - > Endpoint[test-jms:queue:test2] consumer receiving JMS message: > ActiveMQTextMessage {commandId = 7, responseRequired = true, messageId = > ID:niso-42103-1246303182016-0:1:1:1:1, originalDestination = null, > originalTransactionId = null, producerId = > ID:niso-42103-1246303182016-0:1:1:1, destination = queue://test2, > transactionId = null, expiration = 1246303204855, timestamp = 1246303184855, > arrival = 0, brokerInTime = 1246303121399, brokerOutTime = 1246303121433, > correlationId = ID-niso-45344-1246303184258-4-0, replyTo = > temp-queue://ID:niso-42103-1246303182016-0:4:1, persistent = true, type = > null, priority = 4, groupID = null, groupSequence = 0, targetConsumerId = > null, compressed = false, userID = null, content = null, marshalledProperties > = null, dataStructure = null, redeliveryCounter = 0, size = 0, properties = > null, readOnlyProperties = true, readOnlyBody = true, droppable = false, text > = Hello again} > direct:a got processHello again > {JMSXGroupID=null, JMSCorrelationID=ID-niso-45344-1246303184258-4-0, > JMSType=null, JMSExpiration=1246303204855, > JMSMessageID=ID:niso-42103-1246303182016-0:1:1:1:1, JMSRedelivered=false, > JMSDeliveryMode=2, JMSPriority=4, > JMSReplyTo=temp-queue://ID:niso-42103-1246303182016-0:4:1, > JMSTimestamp=1246303184855, JMSDestination=queue://test2} > 22:19:44,905 ERROR EndpointMessageListener:207 - java.lang.Exception: > JMSReplyTo is not set correctly: > got:temp-queue://ID:niso-42103-1246303182016-0:4:1 > Expexting:queue:myResponseQueue > org.apache.camel.RuntimeCamelException: java.lang.Exception: JMSReplyTo is > not set correctly: got:temp-queue://ID:niso-42103-1246303182016-0:4:1 > Expexting:queue:myResponseQueue > at > org.apache.camel.util.ObjectHelper.wrapRuntimeCamelException(ObjectHelper.java:986) > at > org.apache.camel.component.jms.EndpointMessageListener.onMessage(EndpointMessageListener.java:101) > at > org.springframework.jms.listener.AbstractMessageListenerContainer.doInvokeListener(AbstractMessageListenerContainer.java:543) > at > org.springframework.jms.listener.AbstractMessageListenerContainer.invokeListener(AbstractMessageListenerContainer.java:482) > at > org.springframework.jms.listener.AbstractMessageListenerContainer.doExecuteListener(AbstractMessageListenerContainer.java:451) > at > org.springframework.jms.listener.AbstractPollingMessageListenerContainer.doReceiveAndExecute(AbstractPollingMessageListenerContainer.java:323) > at > org.springframework.jms.listener.AbstractPollingMessageListenerContainer.receiveAndExecute(AbstractPollingMessageListenerContainer.java:261) > at > org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.invokeListener(DefaultMessageListenerContainer.java:982) > at > org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:881) > at java.lang.Thread.run(Thread.java:619) > Caused by: java.lang.Exception: JMSReplyTo is not set correctly: > got:temp-queue://ID:niso-42103-1246303182016-0:4:1 > Expexting:queue:myResponseQueue > at com.mycompany.CamelExample.App$1$2.process(App.java:45) > at > org.apache.camel.processor.interceptor.StreamCachingInterceptor.process(StreamCachingInterceptor.java:52) > at > org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:61) > at > org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:61) > at > org.apache.camel.processor.DefaultErrorHandler.process(DefaultErrorHandler.java:52) > at > org.apache.camel.processor.DefaultChannel.process(DefaultChannel.java:147) > at > org.apache.camel.processor.UnitOfWorkProcessor.processNext(UnitOfWorkProcessor.java:54) > at > org.apache.camel.processor.DelegateProcessor.process(DelegateProcessor.java:48) > at > org.apache.camel.component.jms.EndpointMessageListener.onMessage(EndpointMessageListener.java:81) > ... 8 more > 22:19:44,906 WARN DefaultMessageListenerContainer:646 - Execution of JMS > message listener failed > org.apache.camel.RuntimeCamelException: java.lang.Exception: JMSReplyTo is > not set correctly: got:temp-queue://ID:niso-42103-1246303182016-0:4:1 > Expexting:queue:myResponseQueue > ==== -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.