Hello everybody,

using Camel 2.20.2 with ActiveMQ 5.14.5 with the transferExchange option 
enabled. When I read a message from a queue the send custom ExchangeProperties 
are not set. After the exchange is routed to the first endpoint the send 
ExchangeProperties are set.

Simplified example based on 
https://github.com/apache/camel/blob/76c2d9003f73dda3c3a5f5f20ba198900ed05706/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsTransferExchangeTest.java

public class JmsTransferExchangeTest extends CamelTestSupport {

    protected String getUri() {
        return "activemq:queue:foo?transferExchange=true";
    }

    @Test
    public void testSendExchange() throws Exception {
        MockEndpoint mock = getMockEndpoint("mock:result");
        mock.expectedBodiesReceived("Hello World");
        mock.expectedPropertyReceived("bar", 123);

        template.send("direct:start", new Processor() {
            public void process(Exchange exchange) throws Exception {
                exchange.getIn().setBody("Hello World");
                exchange.setProperty("bar", 123);
            }
        });

        assertMockEndpointsSatisfied();
    }

    protected CamelContext createCamelContext() throws Exception {
        CamelContext camelContext = super.createCamelContext();

        ConnectionFactory connectionFactory = 
CamelJmsTestHelper.createConnectionFactory();
        camelContext.addComponent("activemq", 
jmsComponentAutoAcknowledge(connectionFactory));
        return camelContext;
    }

    @Override
    protected RouteBuilder createRouteBuilder() throws Exception {
        return new RouteBuilder() {
            @Override
            public void configure() throws Exception {
                from("direct:start").to(getUri());
                from(getUri())
                 // .to("log:debug") this line has uncommented to make the test 
pass
                    .choice()
                        .when(exchangeProperty("bar").isEqualTo(123))
                            .to("mock:result");
            }
        };
    }
}

The test fails. If I uncomment the ".to("log:debug")" line it works.

What am I missing? Is this a limitation/bug?

Thanks,
Pascal

Reply via email to