【发布时间】:2018-06-09 02:05:36
【问题描述】:
我正在尝试在骆驼中获得请求/回复 jms 消费者, 收到传入的消息,我可以看到骆驼也发送回复,但消息没有编组。
我正在使用拦截器来编组所有进出 activemq 端点的消息
OsdrDataFormat osdrDataFormat = new OsdrDataFormat();
interceptFrom("activemq:*").unmarshal(osdrDataFormat);
interceptSendToEndpoint("activemq:*").marshal(osdrDataFormat);
(我扩展了 JacksonDataFormat,以便在编组消息时填充 JMSType。)
对于正常的一种方式交换,这是有效的(例如)
from("activemq:queue:test").bean(TestComponent.class, "test");
from("direct:test-input").to("activemq:queue:test");
但是当我使用这条路线时
from("activemq:queue:test").bean(TestComponent.class, "test");
然后将带有 JMSReplyTo 消息的消息发送到测试队列(使用 activemq 管理页面)我可以看到骆驼确实发送了回复消息,但它没有编组到 json。
手动添加 marshal 确实有效,但我更喜欢使用拦截器,因为这将允许我创建一个抽象 RouteBuilder 并默认将拦截器添加到每个路由。
from("activemq:queue:test").bean(TestComponent.class, "test").marshal(osdrDataFormat);
有人知道解决这个问题的方法吗?或者更好的方法来确保所有来自和去往 activemq 的消息都被编组?
我还发现了这个帖子:Apache Camel inOut routes, out exchange marshaling/unmarshaling with jaxb 但这里的答案是使用手动编组。
【问题讨论】:
标签: apache-camel activemq