0

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

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

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

4

1 回答 1

0

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

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

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

于 2013-03-19T15:03:49.960 回答