Py学习  »  MQ

rabbitmq-发布到队列或交换

dhrm • 5 年前 • 528 次点击  

对于rabbitmq关于使用 队列 交流 . 假设我想交付 GenerateInvoice 包含一些发票数据的消息,并让多个消费者处理发票数据并生成PDF。各 普通发票 只能由一个使用者处理。

一种方法是声明队列并发布 普通发票 发送到该队列的消息,并允许所有使用者使用该队列中的消息。这将把信息分发给不同的消费者。

我不清楚,如果上述情况正常,或者最佳做法是将消息传递给 交换 而不是直接将它们发布到队列中。使用一个 交换 我必须确保在生产者创建了交换之后,在开始发布消息之前声明一个队列。否则,任何队列都不会接收消息,消息将丢失。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/30886
 
528 次点击  
文章 [ 1 ]  |  最新文章 5 年前
DoIt
Reply   •   1 楼
DoIt    5 年前

在这种情况下,声明一个队列、将generateinvoice消息发布到队列以及拥有该队列的多个使用者。

发布到队列的消息不会丢失,如果没有消费者,它们将保留在RMQ上。唯一的事情是确保在消息发布之前声明队列。

Java示例:

channel.queueDeclare(QUEUE_NAME, false, false, false, null);

然后,发布可以执行如下操作:

channel.basicPublish("", QUEUE_NAME, null, message.getBytes());

消费可以做到:

channel.basicConsume(QUEUE_NAME, true, deliverCallback, consumerTag -> { });