- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
使用 spring-camel,我构建了一条从 JMS 主题进行消费的路由(预计为每个输入消息设置 JMSReplyTo),将消息分割成更小的 block ,将它们发送到 REST 处理器,然后聚合答案,并应生成一条输出消息到 JMSReplyTo 指向的目的地。不幸的是,camel 在其中一个中间步骤中隐式地利用了 JMSReplyTo 目标(生成未编码的 POJO)。
我们有一个调整 JMSReplyTo 的功能要求,以便提供请求-回复消息服务。我能够在结束路由之前读取 JMSReplyTo header ,并将其显式转换为 CamelJmsDestinationName,这成功覆盖了 JMS 组件的目标并在输出主题上生成消息。我不确定这是否是最好的方法,问题是camel仍然自己使用JMSReplyTo。
我的RouteBuilder配置如下:
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 目的地...为什么?我究竟做错了什么?最佳实践是什么?
最佳答案
在端点中使用“disableReplyTo=true”。 Camel 不会尝试使用任何回复选项。
引用:https://camel.apache.org/jms.html了解更多详情
关于java - Apache Camel 到底是如何处理 JMSReplyTo 的? Camel 什么时候隐式使用目的地?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56414437/
我有以下示例路由流,其中我接收 jms 消息,构建 Web 服务请求,然后使用 Web 服务响应响应 JMSReplyTo: from("{{jms.input.queue}}).routeI
使用 spring-camel,我构建了一条从 JMS 主题进行消费的路由(预计为每个输入消息设置 JMSReplyTo),将消息分割成更小的 block ,将它们发送到 REST 处理器,然后聚合答
我是一名优秀的程序员,十分优秀!