Apache Camel 到底是如何处理 JMSReplyTo 的?骆驼什么时候隐式使用目的地?

2023-12-20

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

我们有一个功能要求来调整 JMSReplyTo 以便提供请求-回复消息服务。 我能够在结束路由之前读取 JMSReplyTo 标头,并将其显式转换为 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: (package name).MyRequest”异常,这很明显,因为这只是一个类在我的内部处理中使用 - 我不想将其生成到输出主题。看起来 Camel 确实在 requestProcessor 和 messageSplitter 处理之间隐式使用 JMSReplyTo 目的地...为什么?我究竟做错了什么?最佳实践是什么?


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

Refer: https://camel.apache.org/jms.html https://camel.apache.org/jms.html更多细节

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Apache Camel 到底是如何处理 JMSReplyTo 的?骆驼什么时候隐式使用目的地? 的相关文章

随机推荐

  • DropDownList-项目在回发时为空

    我有 DropDownList 我必须将其填充到与另一个控件的单击事件关联的事件中 数据已填充并存在 但当我选择一个值并回发时 该值为空 这意味着视图状态不起作用 解决方案说在 Init 中填充 DropDown 但我不能 因为要求不允许这
  • 在 Laravel 4 中设置自动增量初始值

    有没有办法使用 Schema Builder 的迁移来设置 Laravel 4 中表上主键的自动增量初始值 我想将表的 id 设置为从 100 开始 我知道使用纯 SQL 可以做到这一点ALTER TABLE MY TABLE AUTO I
  • 如何使用第一个逗号将字符串拆分为段落?

    我有字符串 address 10 Madison Avenue New York NY 212 538 1884 像这样分割它的最好方法是什么 p 10 Madison Avenue p p New York NY 212 538 1884
  • Apache Maven 错误:无法将工件 org.apache.maven.plugins:maven-clean-plugin:pom: 2.5 传输到中央

    我对此很陌生 我正在 apache maven 上工作 我在代理服务器后面工作 每次 我都会尝试构建maven项目 它给了我这个错误 我还更改了 settings xml 文件中的代理设置 但它不起作用 它一直给我同样的问题 构建失败 我在
  • 如何修复缺少对象的 git 存储库?

    我的开发存储库在某个时候丢失了一个对象 git fsck fatal failed to read object 2dddc84156fa30e4614a7ea5a1895885011b8db8 Invalid argument git c
  • 如何允许特定服务器访问我的API?

    我正在使用node js express和mongodb编写一个API 它将在另一台服务器中使用 我只希望该服务器 或将来的更多服务器 能够访问我的 API 我怎样才能做到这一点 如果您只想根据另一台服务器的 IP 进行限制 那么您可以定义
  • numpy 和 pandas timedelta 错误

    在 Python 中 我使用 pandas 生成了一个日期数组 或从 CSV 文件中读取 并且我想为每个日期添加一年 我可以使用 pandas 让它工作 但不能使用 numpy 我究竟做错了什么 或者这是 pandas 或 numpy 中的
  • 线性回归预测中的个别项

    我在 R 中对某些数据集进行了回归分析 并尝试预测数据集中每行的每个自变量对因变量的贡献 所以像这样 set seed 123 y lt rnorm 10 m lt data frame v1 rnorm 10 v2 rnorm 10 v3
  • 停止Excel科学计数法转换[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 有没有办法停止Excel将数据转换为科学记数法 Microsoft Excel 显然假定任何包含数字和 E 的数据都应该是科学记数法并将其
  • 编写集成高斯的 Python 函数的最佳方法?

    在尝试使用 scipy 的四边形方法对高斯进行积分时 假设有一个名为 gauss 的高斯方法 我在将所需参数传递给高斯并让四边形对正确的变量进行积分时遇到问题 有谁有一个关于如何使用四元组和多维函数的好例子吗 但这让我产生了一个更宏大的问题
  • 在 JavaFX 中使用包含伪类的查询

    我正在尝试在编程查询中使用伪类Node lookupAll 然而这似乎给出了意想不到的结果 我在网上搜索过 找不到任何表明 Node lookupAll 不支持伪类的信息 public class Foo extends Applicati
  • jQuery Ajax 调用和 Html.AntiForgeryToken()

    我已经在我的应用程序中实施了缓解措施CSRF 攻击 https en wikipedia org wiki Cross site request forgery以下是我在互联网上的一些博客文章中读到的信息 特别是这些帖子是我实施的驱动力 A
  • 找不到 *.apk 错误

    2011 06 22 23 55 09 main Android Launch 2011 06 22 23 55 09 main adb is running normally 2011 06 22 23 55 09 main Could
  • 在公司防火墙后面运行 npm:我需要告诉安全团队什么?

    我正在尝试运行 node js 但无法安装任何软件包npm被阻止 我已经尝试过这里的解决方案 如何在cntlm配置文件中填写代理信息 https stackoverflow com questions 9181637 how to fill
  • 使用逗号时将 String 转换为 double

    我有一个 UITextfield 它正在由数据库中的数据填充 该值的格式是用逗号分隔小数部分 所以 结构类似于 1 250 50 我将数据保存在字符串中 当我尝试使用 doubleValue 方法将字符串转换为双精度数或浮点数时 我得到 1
  • 多对多关系中的问题

    我有两张桌子jewelry j id j name Description and style style id style name image 每张表与另一张表之间是多对多的关系 因为一个珠宝产品可以有多种款式 并且同一款式的产品有多个
  • 实现普通的 javascript 轮播。(无需插件)

    我正在通过纯 JavaScript 实现轮播 不使用插件 我想设置上一个和下一个按钮来控制幻灯片图像 var firstval 0 function Carousel firstval 2 parent document getElemen
  • Bouncy Castle ECDSA 从私钥创建公钥

    我正在尝试用 C 签署比特币交易 我有 2 位代码正在尝试完成 我可以使用 Bouncy castle 创建一组私钥和公钥 我可以将其转换为钱包导入格式 我还可以从 ECDSA 公钥生成比特币地址 但是 我想签署一笔交易 而我拥有的只是我的
  • 如何在QtCreator中为项目创建文件夹或子目录? [复制]

    这个问题在这里已经有答案了 我想创建子目录和文件夹来组织 Qt 中的代码 我尝试在 shell explorer 中手动创建该目录 但 Qt 无法识别它 在 QT Creator 3 1 x 之前 您可以右键单击您的项目 gt 添新 and
  • Apache Camel 到底是如何处理 JMSReplyTo 的?骆驼什么时候隐式使用目的地?

    使用 spring camel 我构建了一条从 JMS 主题进行消费的路由 预计为每个输入消息设置 JMSReplyTo 将消息分割成更小的块 将它们发送到 REST 处理器 然后聚合答案并应该生成发送到 JMSReplyTo 指向的目的地