【问题标题】:ActiveMQ redelivery at application level应用程序级别的 ActiveMQ 重新交付
【发布时间】:2013-03-07 23:20:14
【问题描述】:

我使用 ActiveMQ 作为作业调度程序。这意味着一个 master 向 ActiveMQ 发送作业消息,多个 slave 从 ActiveMQ 获取作业消息并处理它们。当 slave 完成一项工作时,它们会将带有 job_id 的消息发送回 ActiveMQ。

但是,奴隶是不可靠的。如果某个slave在一段时间内没有响应,我们可以假设slave宕机,并尝试重新发送发送的job消息。

有没有什么好的想法来实现这种重新交付?

【问题讨论】:

    标签: activemq


    【解决方案1】:

    通常,消费者处理重新传递,以便在消息在代理上显示为飞行中时维护消息顺序。这意味着重新交付仅限于单个消费者,除非该消费者终止。通过这种方式,经纪人不知道重新交付。

    在 ActiveMQ v5.7+ 中,您可以选择使用代理端重新传递,可以让代理在延迟后使用重新发送重新传递消息。这是由一个代理插件实现的,该插件通过调度程序重新传递来处理死信处理。当总消息顺序不重要以及消费者之间的吞吐量和负载分布在哪里时,这很有用。通过代理重新传递,未能传递给给定消费者的消息可以立即重新发送。

    有关在配置文件中进行设置的示例,请参阅 ActiveMQ documentation

    【讨论】:

      猜你喜欢
      • 2014-12-15
      • 2016-02-21
      • 2014-09-24
      • 1970-01-01
      • 2017-01-01
      • 2015-06-23
      • 2013-08-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多