[ 
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.

Reply via email to