骆驼拦截/元帅jms回复

问题描述 投票:0回答:1

我试图在camel中获取请求/回复jms消费者,收到传入的消息,我可以看到camel也发送了回复,但消息没有被编组。

我正在使用拦截器来封送来自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管理页面)我可以看到camel确实发送了回复消息,但它没有封送到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个回答
0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.