我很擅长将RabbitMQ用作消息队列协议。我已经为RabbitMQ教程中的发送者和消费者工作队列编写了代码。
[链接:http://www.rabbitmq.com/tutorials/tutorial-two-java.html]
当我们在发件人之前启动消费者时,上述工作正常。 但是如果我们在运行发件人之后启动消费者则会出现问题。 这些消息都没有被启动的消费者使用 运行发件人后。 在研究了RabbitMQ的架构和AMQP相关的东西之后,这似乎很难。
1]是否有可能在发件人和在发件人收到队列中的邮件后启动的消费者之后启动消费者?
2]如果是的话。然后如何做到这一点。是否有一些技术可以做同样的事情?
答案 0 :(得分:2)
是的,有可能。确保声明队列时将auto-delete设置为false。一旦最后一个消费者取消订阅,如果auto-delete设置为true,那么该队列将被删除,当您的发件人向其发送消息时,它们将丢失。如果自动删除设置为false,则在您的消费者取消订阅后,队列将继续存在,并且您的发件人将能够将消息推送到队列而不会丢失。
在http://www.rabbitmq.com/tutorials/amqp-concepts.html#queues
了解有关队列的更多信息答案 1 :(得分:1)
我想在第一种情况下(首先是消费者),消费者在RabbitMQ服务器上正确创建/注册它想要侦听的队列。因此,当发件人发送时,它能够接收它。
在第二种情况下,可能发生的事情是发件人正在尝试发送到不存在/未创建的队列并转到默认/死信。
我建议您打开RabbitMQ管理控制台,看看是否正确创建了队列。