确保传递消息,RabbitMq

时间:2015-07-13 18:05:44

标签: rabbitmq messaging enterprise-integration

我知道常见的方法是在发布消息之前创建消费者队列,但这似乎是非常紧密的耦合在这里,通常我不想知道从这个交换消耗了多少队列以及每个消息有多少消息他们得到了,如何在将服务器与消费者分离的同时保持可靠性?

enter image description here

在此图像上,客户端应用程序仍需要知道是否有任何服务器队列可用于处理身份验证请求。因为如果没有排队,那么这封信就会被删掉,我不相信没有人会这么说过吗?或者我们假设这个队列总是存在(它们是持久的)?

2 个答案:

答案 0 :(得分:0)

RabbitMQ和AMQP 0.9.1的一般工作方式是不将消息的发送者与消费者联系起来。您可以使用许多不同的方法查询交换,以找出绑定到它的队列,但是在您发送消息时,除非您自己实际创建队列和绑定,否则您永远无法确定可用的内容。

您可以检查确保消息未放入队列的一种方法是使用publisher confirms。另一种可能的异步方式是在标准RabbitMQ日志记录交换中侦听您的消息是DLQ的通知。

答案 1 :(得分:0)

您可以使用 queue-pooling ,以确保可靠的邮件传递。在这种情况下,客户端应用程序不需要明确知道可用的队列 - 它只是要求QueuePool获取下一个可用的队列。如果QueuePool用尽,QueuePool将以客户端通过高阶函数定义的方式返回队列。更多信息here