首页 文章

应用程序级别的ActiveMQ重新传递

提问于
浏览
0

我使用ActiveMQ作为工作调度员 . 这意味着一个主服务器向ActiveMQ发送作业消息,多个从服务器从ActiveMQ获取作业消息并处理它们 . 当从服务器完成一个作业时,他们会将带有job_id的消息发送回ActiveMQ .

然而,奴隶是不可靠的 . 如果一个从站在一段时间之前没有响应,我们可以假设从站已关闭,并尝试重新发送已发送的作业消息 .

是否有任何好的想法来实现这种重新交付?

1 回答

  • 0

    通常,消费者处理重新传递,以便它可以维护消息顺序,同时消息在代理上显示为空中 . 这意味着除非消费者终止,否则重新发送仅限于单个消费者 . 通过这种方式,经纪人不知道重新发送 .

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

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

相关问题