【发布时间】:2019-10-28 13:31:31
【问题描述】:
我正在尝试设置轮询 weblogic jms 队列、使用消息并将其发送到 web 服务端点的骆驼上下文。万一事务中发生任何错误或目标系统不可用,我需要重新传递相同的消息而不会丢失序列/排序。
我已经建立了一个单一消费者的骆驼 jms 路线,并根据https://camel.apache.org/transactional-client.html 启用了交易属性,并将重新交付设置为无限制。
当事务使用 messageA 失败时,来自 weblogic 队列的 jms 消息消费被回滚,并且在 weblogic 中将 messageA 标记为重新传递(状态字符串标记为延迟)。但在此期间,如果另一条消息到达 weblogic 队列,骆驼路由会选择 messageB 并将其转发到目标端点,尽管 messageA 仍处于重试模式。这会扭曲消息的整个顺序。
事务客户端用于确保在重新交付期间关闭应用程序时消息不会丢失。
我希望没有消息丢失,并且消息始终按照生成到 weblogic 队列中的正确顺序发送到目标端点。
【问题讨论】:
标签: apache-camel jms weblogic