Python 设置队列中的最大消息数

Python 设置队列中的最大消息数,python,rabbitmq,queue,pika,Python,Rabbitmq,Queue,Pika,我想知道是否可以设置队列中的最大消息数 假设我希望队列Foo中的msg不超过100个,可以吗?可以 从 队列的最大长度可以限制为一组队列 通过为x-max-length队列声明参数提供 非负整数值 好了,皮卡的频道。queue\u declare有queue\u declare有参数参数,这绝对是你想要的。像这样做吧,开心点 import pika QUEUE_SIZE = 5 connection = pika.BlockingConnection(pika.ConnectionPara

我想知道是否可以设置队列中的最大消息数

假设我希望队列Foo中的msg不超过100个,可以吗?

可以

队列的最大长度可以限制为一组队列 通过为x-max-length队列声明参数提供 非负整数值


好了,皮卡的
频道。queue\u declare
有queue\u declare有
参数
参数,这绝对是你想要的。

像这样做吧,开心点

import pika


QUEUE_SIZE = 5

connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
channel = connection.channel()

channel.queue_declare(
    queue='ids_queue',
    arguments={'x-max-length': QUEUE_SIZE}
)

在这里的参数中您还需要跟踪队列的队列溢出行为

谢谢,我试过了,它很管用,但我不满意一件事:
“一旦达到限制,消息将从队列前面丢弃或死信,以便为新消息腾出空间。”
。如果队列已满,您知道如何引发异常吗?因为它会以静默方式覆盖消息,例如,如果限制设置为10,并且我发布了15条消息[0-14],我只会得到5到14之间的MSG。在没有任何警告的情况下,这5条丢失的消息没有机会在队列中获取消息编号(除非您使用的是管理插件),也不会在队列已满时引发异常。看起来您不需要RabbitMQ来执行此任务。@Vor您可以设置一个交换来处理“死信消息”,根据。此方法不会引发异常,但您可以编写某种代码,以便在收到交换的“死信消息”时进行处理,例如发出警告。