1

我知道常见的方法是在发布消息之前创建消费者队列,但是这里似乎很紧密的耦合,一般我不想知道有多少队列从这个交换中消耗,每个队列有多少消息,怎么能我们在将服务器与消费者分离的同时保持可靠性?

在此处输入图像描述

在此图像上,客户端应用程序仍然需要知道是否有任何服务器队列可用于处理身份验证请求。因为如果没有队列,消息将是死信,我不相信没有人想过这个?或者我们假设这个队列总是存在的(它们是持久的)?

4

2 回答 2

1

RabbitMQ 和 AMQP 0.9.1 通常的工作方式是不将消息的发送者耦合到消费者。您可以使用许多不同的方法查询交换以找出绑定到它的队列,但是在您发送消息时,除非您自己实际创建队列和绑定,否则您永远无法确定究竟什么是可用的。

可以检查消息是否未放入队列的一种方法是使用发布者确认。另一种可能的异步方式也是在标准 RabbitMQ 日志交换上侦听您的消息是 DLQ 的通知。

于 2015-07-13T20:07:38.590 回答
1

您可以使用队列池来保证可靠的消息传递。在这种情况下,客户端应用程序不需要明确知道可用队列 - 它只是询问QueuePool下一个可用队列。如果QueuePool耗尽,QueuePool 将以客户端通过高阶函数定义的方式返回一个队列。更多信息在这里

于 2015-08-06T13:16:34.317 回答