You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2009/03/26 13:58:53 UTC

svn commit: r758617 - in /camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms: JmsBinding.java JmsProducer.java

Author: davsclaus
Date: Thu Mar 26 12:58:49 2009
New Revision: 758617

URL: http://svn.apache.org/viewvc?rev=758617&view=rev
Log:
CAMEL-1461: JMSProducer does not forward JMSReplyTo for not OUT capable, unless QoS is preserved.

Modified:
    camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsBinding.java
    camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsProducer.java

Modified: camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsBinding.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsBinding.java?rev=758617&r1=758616&r2=758617&view=diff
==============================================================================
--- camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsBinding.java (original)
+++ camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsBinding.java Thu Mar 26 12:58:49 2009
@@ -252,13 +252,7 @@
             if (headerName.equals("JMSCorrelationID")) {
                 jmsMessage.setJMSCorrelationID(ExchangeHelper.convertToType(exchange, String.class, headerValue));
             } else if (headerName.equals("JMSReplyTo") && headerValue != null) {
-                if (exchange.getPattern().isOutCapable()) {
-                    // only set the JMSReply if the Exchange supports Out
-                    jmsMessage.setJMSReplyTo(ExchangeHelper.convertToType(exchange, Destination.class, headerValue));
-                } else {
-                    // warn we got a JMSReplyTo but the Exchange is not out capable
-                    LOG.warn("Exchange is not out capable, Ignoring JMSReplyTo: " + headerValue);
-                }
+                jmsMessage.setJMSReplyTo(ExchangeHelper.convertToType(exchange, Destination.class, headerValue));
             } else if (headerName.equals("JMSType")) {
                 jmsMessage.setJMSType(ExchangeHelper.convertToType(exchange, String.class, headerValue));
             } else if (LOG.isDebugEnabled()) {

Modified: camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsProducer.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsProducer.java?rev=758617&r1=758616&r2=758617&view=diff
==============================================================================
--- camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsProducer.java (original)
+++ camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsProducer.java Thu Mar 26 12:58:49 2009
@@ -272,6 +272,19 @@
                 exchange.setException(e);
             }
         } else {
+            // we must honor these special flags to preverse QoS 
+            if (!endpoint.isPreserveMessageQos() && !endpoint.isExplicitQosEnabled()
+                    && exchange.getIn().getHeaders().containsKey("JMSReplyTo")) {
+                // we are routing an existing JmsMessage, origin from another JMS endpoint
+                // then we need to remove the existing JMSReplyTo, JMSCorrelationID.
+                // as we are not out capable and thus do not expect a reply, and therefore
+                // the consumer of this message we send should not return a reply
+                String to = destinationName != null ? destinationName : "" + destination;
+                LOG.warn("Disabling JMSReplyTo as this Exchange is not OUT capable: " + exchange + " with destination: " + to);
+                exchange.getIn().setHeader("JMSReplyTo", null);
+                exchange.getIn().setHeader("JMSCorrelationID", null);
+            }
+
             MessageCreator messageCreator = new MessageCreator() {
                 public Message createMessage(Session session) throws JMSException {
                     Message message = endpoint.getBinding().makeJmsMessage(exchange, in, session, null);