如果队列达到限制,Pika python将等待RabbitMQ发布程序
我有一个场景,一个python脚本,它将发布150k条消息,每条消息的最大大小为10kb。然后我将队列限制设置为最大5000条消息。然后,发布者将消息发布到队列中,直到它达到5000条消息的限制。然后消费者将尝试使用该消息如果队列达到限制,Pika python将等待RabbitMQ发布程序,python,rabbitmq,pika,Python,Rabbitmq,Pika,我有一个场景,一个python脚本,它将发布150k条消息,每条消息的最大大小为10kb。然后我将队列限制设置为最大5000条消息。然后,发布者将消息发布到队列中,直到它达到5000条消息的限制。然后消费者将尝试使用该消息 我想问的是,如果队列已满,publisher是否可以等待发布消息?不丢弃消息。将再次检查队列是否可用,然后publisher将发布数据。RabbitMQ团队监视并仅有时回答有关StackOverflow的问题 如果您使用的是arecent RabbitMQ版本(如3.7.5
我想问的是,如果队列已满,publisher是否可以等待发布消息?不丢弃消息。将再次检查队列是否可用,然后publisher将发布数据。RabbitMQ团队监视并仅有时回答有关StackOverflow的问题
如果您使用的是arecent RabbitMQ版本(如
3.7.5
),则可以将设置为拒绝发布
。然后,在代码中,使用channel\u实例.confirm\u delivery()
方法启用publisher confirms。最后,当达到队列限制时,一条basic.nack
消息将发送回您的代码,并将引发一个nackeror
异常,您可以捕获该异常。RabbitMQ团队监视并仅有时回答有关StackOverflow的问题
如果您使用的是arecent RabbitMQ版本(如
3.7.5
),则可以将设置为拒绝发布
。然后,在代码中,使用channel\u实例.confirm\u delivery()
方法启用publisher confirms。最后,当达到队列限制时,一条basic.nack
消息将发送回您的代码,并将引发一个您可以捕获的nackeror
异常。我想象如果队列已满,pika将引发一个异常。你能试着将最大队列大小设置为非常小的值,看看会发生什么吗?我已经试过了,将x-max-length设置为10。使用basic_publish,但即使队列已满,也始终返回true。执行此操作时,是否所有消息都已排队,或者某些消息会以静默方式失败?可能是basic_publish
阻塞,直到它能够发布。我想如果队列已满,pika会引发异常。你能试着将最大队列大小设置为非常小的值,看看会发生什么吗?我已经试过了,将x-max-length设置为10。使用basic_publish,但即使队列已满,也始终返回true。执行此操作时,是否所有消息都已排队,或者某些消息会以静默方式失败?可能是basic\u publish
阻塞,直到它能够发布。该解决方案指出,当队列已满时,消息将被丢弃,但我不想丢弃消息。我必须确保所有消息都被插入队列。我的回答是正确的。请仔细重读那份文件。您必须将拒绝发布
与publisher确认相结合,您将得到否定的确认。这就是为什么我提到了confirm\u delivery
方法调用。然后,您的应用程序将负责捕获nackeror
,并在您确定的一段时间后重新尝试发布。该解决方案声明,当队列已满时,消息将被丢弃,但我不想丢弃消息。我必须确保所有消息都被插入队列。我的回答是正确的。请仔细重读那份文件。您必须将拒绝发布
与publisher确认相结合,您将得到否定的确认。这就是为什么我提到了confirm\u delivery
方法调用。然后,您的应用程序将负责捕获nackeror
,并在您确定的一段时间后重新尝试发布。