Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java RabbitMQ-如何获取已发布的旧消息?_Java_Rabbitmq_Messagebroker - Fatal编程技术网

Java RabbitMQ-如何获取已发布的旧消息?

Java RabbitMQ-如何获取已发布的旧消息?,java,rabbitmq,messagebroker,Java,Rabbitmq,Messagebroker,假设发布者和第一个订阅者已经开始了,一分钟后我启动了第二个订阅者,但是第二个订阅者在一分钟前无法获得旧消息,我如何获得第二个订阅者的旧消息? 现在我用这个模式 发布者和第一个订阅者在上午11:28开始 第一个子服务器有如下消息: [“M1”、“M2”、“M3”] 然后第二个订户在上午11:30开始 第一个子服务器有如下消息: [“M1”、“M2”、“M3”、“M4”、“M5”、“M6”] 第二个子服务器有如下消息: [“M4”、“M5”、“M6”] 第二个订阅者如何获得旧消息并与第一个订阅者具有

假设发布者和第一个订阅者已经开始了,一分钟后我启动了第二个订阅者,但是第二个订阅者在一分钟前无法获得旧消息,我如何获得第二个订阅者的旧消息? 现在我用这个模式

发布者和第一个订阅者在上午11:28开始 第一个子服务器有如下消息:

[“M1”、“M2”、“M3”]

然后第二个订户在上午11:30开始

第一个子服务器有如下消息:

[“M1”、“M2”、“M3”、“M4”、“M5”、“M6”]

第二个子服务器有如下消息:

[“M4”、“M5”、“M6”]


第二个订阅者如何获得旧消息并与第一个订阅者具有相同的消息

您是否将消息持久化到代理中的某个位置?我的理解是,如果消息已被一个订户使用,则不能再次使用。对于扇出,我认为代理将只向所有可用订阅者发布。在您的情况下,只有一个订阅者。是的,我一直在保留所有消息,因为我知道保留消息就是在服务器重新启动时假装消息消失。我编辑了我的问题以澄清问题。我认为,在这种情况下,您可能需要向发布者发送一个关于新添加队列的事件,以及之前发送的所有消息ID的日志。之后,发布者可以发送消息的历史记录,代理可以将它们重定向到新队列。然而,也有相关的担忧。据我所知,这不是我们可能希望使用MQs的方式。我想,在这种情况下,我应该尝试使用卡夫卡。非常感谢您的回答@Amal