【问题标题】:Camel intercept / marshal jms reply骆驼拦截/marshal jms回复
【发布时间】: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


    【解决方案1】:

    interceptSendToEndpoint 仅在 Camel 向 Camel 端点发送消息时出现,而不是在 JMS 组件在内部向某个 JMS 目的地发送一些 JMS 消息时出现。不一样。

    【讨论】:

    • 抱歉(非常)迟回复,我最终使用手动编组和解组是最好的解决方案,我们发现了一些我们想在解组之前做其他事情的用例。跨度>
    猜你喜欢
    • 2012-12-01
    • 2015-07-07
    • 1970-01-01
    • 2012-11-10
    • 1970-01-01
    • 2013-05-23
    • 2018-03-07
    • 2014-04-26
    • 1970-01-01
    相关资源
    最近更新 更多