xml - apache-camel 将批量消息放入 JMS
问题描述
我正在建立一个项目,其中必须一次性完成 JMS 的批量提交。使用事务重新启动消息处理,因此需要考虑如何将“x”个消息推送到 JMS 队列并执行 JMS 提交。
目前正在做的是创建一个 JMS 消息,其中一个长字符串附加了我希望一次性提交的消息。然后使用拆分器将消息拆分为另一个路由中的多个。最后,使用另一个路由将消息发送到 JMS(作为批量提交)。
<route>
<from uri="file:sample"/>
<split streaming="true">
<tokenize token="\n"/>
<to uri="activemq:queue:dest"/>
</split>
</route>
我希望构建一个控制何时发出 JMS 提交的路由。
用例正在尝试从队列 A 中读取消息并创建许多消息(让该数字为“x”)。并将它们推送到队列 B。但是,我希望像 DB 一样进行批量提交(或批量提交)。我试图高效地不创建与 JMS 的连接并进行单独的提交。
解决方案
我没有完全看到你的问题。也许这只是使用什么错误处理的问题。
设置:您有一个带有事务处理 JMS 消费者的 Camel 路由,并且在此路由中,您将多条消息发送到一个或不同的队列。
好案例:路由成功完成,所有JMS消息都送达。
错误案例:如果你的路由遇到错误,比如说在处理的过程中,有些 JMS 消息已经“发送”了,有些还没有。
在这种情况下,根本不会发送任何消息,因为 Camel 进行了回滚,并且已经“发送”的 JMS 消息并没有真正发送,或者更准确地说,它们还没有提交,也不会被提交。
重要细节:骆驼不能处理错误。如果是这样,则错误不会传播到代理,因此所使用的消息将被提交,JMS 事务也是如此。
推荐阅读
- r - 如何在 R Shiny 中仅使用一个下载按钮下载多个图?
- python - 基于阈值对元素求和
- node.js - 如何在 NodeJs 中使用 Canvas 加载 GIF 图像?
- pytorch - RuntimeError:堆栈期望每个张量大小相等,但在条目 0 处得到 [3, 336, 500] 在条目 1 处得到 [3, 500, 336]
- python - 如何找到球接触球场的坐标
- c# - 使用 JSON 反序列化
- reactjs - 删除 App.js 后创建 App.jsx 时出错
- javascript - 无法使用 Javascript 逐步更改 div 的左值
- c++ - 运行时错误:引用绑定到未对齐地址 0xbebebebebebec0ba 类型“int”,需要 4 字节对齐
- excel - 如何使用 Selenium 的 Apache POI 集成基于单元格属性(关键字)从 Excel 工作表中读取单元格值