2017-05-03 51 views
1

我正在尝试升级我们的应用程序之一的骆驼版本。但似乎我不能再使用“transferExchange”选项通过ActiveMQ/JMS发送属性。ActiveMQ transferExchange不再在骆驼工作?

我写了一个小测试程序:

public static void main(String args[]) throws Exception { 
    CamelContext context = new DefaultCamelContext(); 
    ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("vm://localhost?broker.persistent=false"); 
    context.addComponent("test-jms", JmsComponent.jmsComponentAutoAcknowledge(connectionFactory)); 
    context.addRoutes(new RouteBuilder() { 
     @Override 
     public void configure() { 
      String JMS_URI = "test-jms:queue:test.queue?transferExchange=true"; 

      from("direct:start") 
       .setProperty("some-string", constant("foo")) 
       .setProperty("some-date", body()) 
       .to(JMS_URI); 

      from(JMS_URI) 
       .process(new Processor() { 
        @Override 
        public void process(Exchange exchange) throws Exception { 
         System.out.println("some-string: " + exchange.getProperty("some-string")); 
         System.out.println("some-date: " + exchange.getProperty("some-date")); 
        } 
       }); 
     } 
    }); 

    ProducerTemplate template = context.createProducerTemplate(); 
    context.start(); 
    template.sendBody("direct:start", new Date()); 

    Thread.sleep(1000); 
    context.stop(); 
} 

它使用骆驼2.15.2但与空值时2.18.3输出正确的价值观。

我如何得到旧的行为?

回答

2

交换属性不再传播,而且您无法打开它。将您的数据存储在邮件标题中。