我有一个场景,一个python脚本将发布让我们说150k消息,每条消息大小最大10kb。然后我将队列限制设置为最大5000消息。然后,发布者将消息发布到队列中,直到达到限制5000消息。然后,消费者将尝试使用该消息。
我想问的是,如果队列已满,发布者是否可以等待发布消息?不丢弃消息。将再次检查队列是否可用,然后发布者将发布数据。
答案 0 :(得分:2)
RabbitMQ团队监控the rabbitmq-users
mailing list,有时只回答StackOverflow上的问题。
如果您使用的是iscent RabbitMQ版本(例如3.7.5
),则可以将overflow
behavior设置为reject-publish
。然后,在您的代码中,使用channel_instance.confirm_delivery()
方法启用发布商确认。最后,当达到队列限制时,basic.nack
消息将被发送回您的代码,并将引发您可以捕获的NackError
异常。