首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Apache Camel到底是如何处理JMSReplyTo的?camel什么时候隐式地利用了目的地?

Apache Camel到底是如何处理JMSReplyTo的?camel什么时候隐式地利用了目的地?
EN

Stack Overflow用户
提问于 2019-06-02 19:05:58
回答 1查看 894关注 0票数 1

使用spring-camel,我构建了一个从JMS主题消费的路由(预计将为每个输入消息设置JMSReplyTo ),将消息拆分成较小的块,将它们发送到REST处理器,然后聚合答案,并应向JMSReplyTo指定的目的地生成输出消息。不幸的是,camel在其中一个中间步骤中隐式地利用了JMSReplyTo目的地(生成一个未编组的POJO)。

为了提供请求-应答消息传递服务,我们有一个调整JMSReplyTo的功能需求。我能够在结束路由之前读取JMS头,并显式地将其转换为CamelJmsDestinationName,这将成功覆盖JMSReplyTo组件的目的地,并在输出主题上生成消息。我不确定这是否是最好的方法,问题是camel仍然在自己使用JMSReplyTo。

我的RouteBuilder配置如下:

代码语言:javascript
复制
from("jms:topic:T.INPUT")
.process(requestProcessor)
.unmarshal().json(JsonLibrary.Jackson, MyRequest.class)
.split(messageSplitter)
.process(restProcessor)
.aggregate(messagesAggregator)
.unmarshal().json(JsonLibrary.Jackson, BulkResponses.class)
.process(responseProcessor)
.to("jms:topic:recipientTopic");

T.INPUT是输入主题的名称,而recipientTopic只是一个占位符,将被CamelJmsDestinationName替换。

我不喜欢在路由配置中使用CamelJmsDestinationName和一种模拟的主题名称,所以我愿意找到更好的解决方案。如果camel自动利用JMSReplyTo来生成输出主题的输出消息,那就太好了。

目前的问题是,camel在JMSReplyTo主题上产生一个中间输出,但输出是一个未编组的MyRequest对象,这会导致一个异常"ClassNotFoundException:(包名).MyRequest“,这很明显,因为这只是我的内部处理中使用的一个类-我不想将其生成到输出主题中。似乎Camel确实在requestProcessor和messageSplitter处理之间隐式地使用了JMSReplyTo目的地……为什么?我做错了什么?最佳实践是什么?

EN

回答 1

Stack Overflow用户

发布于 2019-06-04 15:05:39

在端点中使用"disableReplyTo=true“。Camel不会尝试使用任何回复选项。

有关更多细节,请参阅:https://camel.apache.org/jms.html

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56414437

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档