【问题标题】:Camel active mq - Producer to confirm if messages are processed by consumerCamel active mq - 生产者确认消息是否由消费者处理
【发布时间】:2018-10-10 21:44:37
【问题描述】:

我们有一个生产者服务,它正在向主题发布消息,并且我们有 3 个消费者实例从主题中读取该消息。只有当所有消费者在另一个回复队列中处理并回复成功消息时,生产者才需要做进一步的处理(更新数据库)。即使其中一项消费者服务由于某些异常或回复队列中的任何失败消息而失败,生产者也不应该为该发布请求更新数据库。

对于下一个请求(主题中发布的新消息),如果所有消费者都在回复队列中处理并回复,则生产者应更新数据库。我们如何用骆驼和activemq实现这一点。是否有任何 EIP 模式可以实现这一目标?

任意

【问题讨论】:

    标签: java apache-camel activemq


    【解决方案1】:

    是的,生产者只需在回复队列上使用aggregator 企业集成模式即可确保所有 3 个消费者都处理了上一条消息。

    文档:Apache Camel aggregator2 组件。

    您将需要一个唯一键并使用适当的聚合策略。

    【讨论】:

    • 感谢 Vikingsteve 的回复。问题的症结在于生产者是一个单独的骆驼路线,它位于不同的代码库中,部署在开放式班次中。 Simalrly 消费者骆驼路线是不同的代码库并部署在开放式班次中。通常消费者在开放班次中部署为 3-4 个实例,请求由开放班次平台进行负载平衡。我的问题是,如果我们聚合器可以在回复队列上等待多长时间来确认是否所有消费者都回复了。如果有 2 位消费者在 5 秒内回复,而第 3 位消费者需要 1 小时回复怎么办。在聚合器中,我们应该提到超时或完成。
    • 是的,你可以而且绝对应该建立超时。你看过骆驼网站上的一些例子吗?该组件可通过聚合策略进行自定义
    猜你喜欢
    • 2011-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多