error-handling - Camel : defer ActiveMQ messages until error condition gets resolved

标签 error-handling apache-camel activemq

我已经在 Camel 路由中实现了一项服务,该服务使用了ActiveMQ队列中的消息,进行了一些处理并将其发送到外部系统。

如果在调用外部系统时出现问题,则必须将消息ID通知回调用后端系统。由于必须维持消息顺序,因此服务需要推迟已经排队的消息和后续消息,直到解决错误情况为止。

实际上,由于已处理失败的消息,因此必须将其从队列中删除,因此它无法执行。与 Camel 重新交付相比,这可能有所不同。

后端系统应控制进一步的过程。要么再次发送有问题的消息,然后服务应处理此一条消息(由其ID标识),然后继续处理延迟的消息。或后端发送一些继续信号,该信号指示服务继续处理延迟的消息,尽管失败的消息不再出现。这两个选项都可以解决错误情况。

到目前为止,我已经考虑过实现涉及多个队列的某种基于 Camel 的交换,路由决定路由是否可以直接处理传入消息或是否有延迟消息要处理。但是我不知道是否有一些EIP可以巧妙地描述这种情况。

您能以一种喜剧的方式给我一些建议吗?

最佳答案

您所描述的听起来(至少对我而言)听起来像是经过精心设计的工作流程而不是单个EIP。这完全可以使用事件驱动的系统来完成,但是当试图将其强制为仅使用一个队列解决方案和单个EIP时,通常会变得很脆弱。

多队列/多 Camel 路由方法是直截了当的,不需要任何不自然的行为(停止路由,重新排队所有内容等)来通常维护消息的排序等。

关于error-handling - Camel : defer ActiveMQ messages until error condition gets resolved,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36100180/

相关文章:

php - 如何检索 PDO 错误消息?

string - 将字母放入字符串时为什么会出错?

scala - 使用 Akka、SQS 和 Camel 的消费者投票率

ruby-on-rails - 使用js表单rails渲染错误消息

r - 绕过 data.table::fread 中的 "ghost"换行符或文件结尾 (EOF)

java - uri Telegram 不支持的端点类型

java - Apache camel soap 请求类型转换错误

kubernetes - 在POD中使用服务的ClusterIP地址

java - Camel Wire Tap - 用于接受两个输入

java - ActiveMq:超过允许的最大客户端连接数