【发布时间】:2023-03-29 06:08:02
【问题描述】:
根据Apache Camel documentation,“Camel 使用以下组件支持 EIP 模式的保证交付:... JMS。”
我试图了解这是否意味着我可以在多组件路线的中间使用 JMS 来“保证交付”。
例如,我有一些看起来像这样的路线:
from("rest://post:someRestRoute")
// blah blah
.to("jms:queue:someQueue");
from("jms:queue:someQueue")
// blah blah
.to("spring-ws:someAddress")
.to("someOtherRoute");
在多组件路由中间使用 JMS 有什么好处吗? Camel 在队列中读写,队列在同一台计算机和同一个 JVM 上运行,所以 Camel 只保证传递给自己,这似乎是多余的。
例如,
- 一条消息被发布到
someRestRoute。 - 消息在
someQueue上排队和持久化。 - 消息立即出队。
- 消息被发送到
someAddress的网络服务。
据我了解,就 JMS 代理而言,消息在成功出列的那一刻就被“传递”了; spring-ws:someAddress 是否抛出异常无关紧要。我想如果 Camel 在第 2 步之后立即崩溃,这可能会有所帮助,但我希望能保证交付给 someAddress。
在多组件路由中间使用 JMS 有什么好处吗?例子中可以用来“保证送达”到someAddress吗?
【问题讨论】:
标签: java apache-camel jms