【发布时间】:2016-03-22 04:20:10
【问题描述】:
我在 Camel 路由中实现了一项服务,该服务使用来自 ActiveMQ 队列的消息,进行一些处理并将它们发送到外部系统。
如果调用外部系统时出现问题,必须将消息 ID 通知回调用后端系统。由于必须保持消息顺序,因此服务需要推迟已经入队的消息和后面的消息,直到错误条件得到解决。
事实上,失败的消息必须从队列中移除,因为它已经被处理过了,所以它失败了。与骆驼重新交付相比,这可能有所不同。
后端系统应控制进一步的进程。要么它再次发送有问题的消息,然后服务应该处理这条消息(由它的 ID 标识),然后继续处理延迟的消息。或者后端发送一些继续信号,指示服务继续处理延迟消息,尽管失败的消息没有再次出现。这两个选项都解决了错误情况。
到目前为止,我一直在考虑实现某种涉及多个队列的基于 Camel 的切换,其中路由决定它是否可以直接处理传入的消息,或者是否有延迟的消息要处理。但我不知道是否有一些 EIP 可以简洁地描述这种情况。
你能给我一些关于骆驼式方法的建议吗?
【问题讨论】:
标签: error-handling apache-camel activemq