Hi, I encoutered some problem deploying a bridge between 2 jms brokers via spring:
On one hand i have a public access jms broker (currently activemq 5.2.0) accepting connections from many clients, each one working with a "name standardized" set of queues. On the other hand, i have a private jms broker (same activemq for easier testing but will change soon) with only a common set of queues listened by my asynchronous processor. I want to use a camel route to concentrate every clients queues to the ones of my private jms broker. JMS Messages exchange works as follows: In some cases, input messages doesn't expect reply (no replyTo set -> so InOnly camel speaking) In other cases, input messages expect a reply (replyTo set) but depending on input message content and security configuration on processor, those one could never reply to requester (i quess it falls into the InOptionalOut scheme) Here's my initial configuration: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:amq="http://activemq.apache.org/schema/core" xmlns:cml="http://activemq.apache.org/camel/schema/spring" xmlns="http://www.springframework.org/schema/beans" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://activemq.apache.org/schema/core http://activemq.apache.org/schema/core/activemq-core-5.2.0.xsd http://activemq.apache.org/camel/schema/spring http://activemq.apache.org/camel/schema/spring/camel-spring-1.5.0.xsd"> <!-- - - - - - - - - - - - - - - - - - - - --> <!-- PUBLIC BROKER CONFIGURATION --> <!-- - - - - - - - - - - - - - - - - - - - --> <!-- The public broker --> <bean id="public" class="org.apache.camel.component.jms.JmsComponent"> <property name="configuration"> <bean class="org.apache.camel.component.jms.JmsConfiguration"> <property name="connectionFactory"> <amq:connectionFactory brokerURL="failover:tcp://localhost:61616" userName="public" password="toto"/> </property> </bean> </property> </bean> <!-- The private broker --> <bean id="private" class="org.apache.camel.component.jms.JmsComponent"> <property name="configuration"> <bean class="org.apache.camel.component.jms.JmsConfiguration"> <property name="connectionFactory"> <amq:connectionFactory brokerURL="failover:tcp://localhost:61617" userName="private" password="titi"/> </property> </bean> </property> </bean> <!-- My routing configuration --> <cml:camelContext id="router"> <cml:route> <cml:from uri="public:*.queues.in.*"/> <cml:to uri="private:private-queues.in.0"/> </cml:route> </cml:camelContext> </beans> My problem is that when replyTo is set, camel expect a reply on dynamically created temp queue which may never came-back or very late (due to asynchronous processing), so dead letter and time out often occurs. I tried to add exchangePattern=InOptionalOut on queues without success. So i disable camel replyTo (via the disableReplyTo property) and manually handle it. Input message are so considered as InOnly and my processor directly reply setting correlationID as input messageid. However, routing override incomings messageId so i produce replies with wrong correlation id as explainded here: client push message in public broker -> public broker affect ID=1 -> camel route it to private broker which override ID to 2 -> so my processor listening private broker handle message with ID=2 (producing correlation ID=2 against 1 desired) I tried to set messageIdEnabled to false on private but it does works (i saw activemq 5.2.0 uses camel 1.5.0 which had a bug on messageID copy solved in later version so i have customized my active mq to use 1.6.0 but wihout success) Can someone help me to solve my problem ? Thanks, Nicolas -- View this message in context: http://www.nabble.com/Routing-keeping-originalMessageId-tp22678749p22678749.html Sent from the Camel - Users (activemq) mailing list archive at Nabble.com.