Hi, I'm trying to use a Routing Slip with the InOut pattern. Also I have the requirement to transact the whole system. I have set up a small example but I won't run. The message stays inside the "producer" queue and will not be Picked up by the "_route1" or "_route2".
When I'm commenting the line "<property name="transacted" value="true" />" from the ActiveMq Component, it works fine, but then nothing is transacted. Also the line: <setExchangePattern id="_setExchangePattern1" pattern="InOnly" /> does not reset the JMSReply to header, so every other following queue will try to send a reply to this temp queue. Any ideas how to solve a. that I can user Transaction, InOut Pattern and a routing slip. b. that the JMSReply header is reset. I know I can use removeHeaders, but it looks a bit as a bug for me... Best, Thomas <?xml version="1.0" encoding="UTF-8"?> <blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0" xmlns:amq="http://activemq.org/config/1.0" xmlns:cm="http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.osgi.org/xmlns/blueprint/v1.0.0 https://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd http://camel.apache.org/schema/blueprint http://camel.apache.org/schema/blueprint/camel-blueprint.xsd"> <!-- Active MQ General Properties --> <bean id="policy" class="org.apache.activemq.RedeliveryPolicy"> <property name="maximumRedeliveries" value="-1" /> </bean> <!-- Active MQ Properties Z-SM --> <bean id="jmsTransactionManager" class="org.springframework.jms.connection.JmsTransactionManager"> <property name="connectionFactory" ref="activemq-factory" /> </bean> <bean id="required" class="org.apache.camel.spring.spi.SpringTransactionPolicy"> <property name="transactionManager" ref="jmsTransactionManager" /> <property name="propagationBehaviorName" value="PROPAGATION_REQUIRED" /> </bean> <bean class="org.apache.activemq.camel.component.ActiveMQComponent" id="activemq"> <property name="connectionFactory" ref="activemq-factory" /> <property name="transacted" value="true" /> </bean> <bean class="org.apache.activemq.ActiveMQConnectionFactory" id="activemq-factory"> <property name="brokerURL" value="tcp://localhost:61617" /> <property name="userName" value="admin" /> <property name="password" value="admin" /> </bean> <!-- Property configuration --> <cm:property-placeholder id="placeholder" persistent-id="routeconfig-routeslipconfig" update-strategy="reload"> <cm:default-properties> <cm:property name="routing.slip" value="activemq:queue:ExcutionProcessA,activemq:queue:ExcutionProcessB" /> </cm:default-properties> </cm:property-placeholder> <camelContext id="routingSlipContext" xmlns="http://camel.apache.org/schema/blueprint"> <propertyPlaceholder id="properties" location="blueprint:placeholder" /> <route id="producer"> <from id="_from1" uri="timer:mytimer?delay=2000" /> <transacted ref="required" /> <to uri="activemq:queue:producer" /> </route> <route id="routingSlip"> <from uri="activemq:queue:producer" /> <setBody id="_setBody1"> <simple>asdf</simple> </setBody> <setHeader headerName="queue1"> <simple>ExcutionProcessA</simple> </setHeader> <setHeader headerName="queue2"> <simple>ExcutionProcessB</simple> </setHeader> <setExchangePattern id="_setExchangePattern1" pattern="InOut" /> <routingSlip id="_routingSlip1"> <simple>activemq:queue:${header.queue1},activemq:queue:${header.queue2}</simple> </routingSlip> <setBody id="_setBody5"> <simple>${body} -> main route</simple> </setBody> <setExchangePattern id="_setExchangePattern1" pattern="InOnly" /> <log id="_log1" message="${body}" /> <log id="_log2" message="$simple{headers}" /> <to id="_to1" uri="activemq:queue:output" /> </route> <route id="mocker"> <from uri="activemq:queue:output" /> <to uri="mock:done" /> </route> <route id="_route1"> <from id="_from2" uri="activemq:queue:ExcutionProcessA" /> <setBody id="_setBody2"> <simple>${body} -> route 1</simple> </setBody> <log id="_log3" message="consumer 2" /> <setHeader headerName="route1" id="_setHeader1"> <simple>yeah!</simple> </setHeader> </route> <route id="_route2"> <from id="_from3" uri="activemq:queue:ExcutionProcessA" /> <setBody id="_setBody3"> <simple>${body} -> route 1</simple> </setBody> <log id="_log4" message="consumer 1" /> <setHeader headerName="route1" id="_setHeader2"> <simple>yeah!</simple> </setHeader> </route> <route id="_route3"> <from id="_from4" uri="activemq:queue:ExcutionProcessB" /> <setBody id="_setBody4"> <simple>${body} -> route 2</simple> </setBody> <setHeader headerName="route2" id="_setHeader3"> <simple>yeah!</simple> </setHeader> </route> </camelContext> </blueprint>