将消息保留在主题中,直到所有使用者都完成处理



团队,我们有一个发布者,它发布消息以请求主题,并假设有2个使用者实例正在运行。这两个实例将从主题获取消息。一个消费者处理时没有任何问题,但另一个消费者在处理过程中崩溃在中间。由于它是不持久的主题,在消费者获取消息时,消息已经从请求主题中删除。现在我们不希望这种情况发生。除非两个使用者都完成了,否则主题中应该有消息。由于消费者实例是动态的,我们不能在这种情况下使用持久订阅者。今天我们有2个消费者实例,明天根据负载,我们可能会再添加2个消费者示例,如果我们有持久订户,我们就无法维护动态clientId和持久订户Naem。我们使用骆驼路线为消费者和出版商。

activemq中有任何方法或选项可以处理此问题?

谢谢,金鹰队。

问题是Topics不是这样工作的,如果订阅不持久,并且发布时客户端不存在,则不会保留消息。您正在查找的内容听起来更像是一个队列,因此您可能需要改变对应用程序正在做什么的想法。

ActiveMQ有一个称为追溯消费者的功能,它可以在内存中保存一些过去的Topic消息,但这是不可靠的,因为您的客户端可能出现得太晚,以至于最旧的消息会从内存中删除,或者您的代理可能已失败并重新启动,在这种情况下,这些消息会消失。

相关内容

最新更新