Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
RabbitMQ确认超时_Rabbitmq - Fatal编程技术网

RabbitMQ确认超时

RabbitMQ确认超时,rabbitmq,Rabbitmq,我正在使用RPC模式处理带有RabbitMQ的对象。 您可能怀疑,我有一个对象,我想让该进程完成,然后向RPC客户端发送ack。 默认情况下,Ack的超时时间约为3分钟。 我的过程需要很长时间。 如何更改每个对象的ack超时,或者如何处理这些类似的进程?RabbitMQ不提供任何类型的确认消息超时机制。官方Python教程中对此进行了讨论: There aren't any message timeouts; RabbitMQ will redeliver the message only wh


我正在使用RPC模式处理带有RabbitMQ的对象。
您可能怀疑,我有一个对象,我想让该进程完成,然后向RPC客户端发送ack。
默认情况下,Ack的超时时间约为3分钟。
我的过程需要很长时间。

如何更改每个对象的ack超时,或者如何处理这些类似的进程?

RabbitMQ不提供任何类型的确认消息超时机制。官方Python教程中对此进行了讨论:

There aren't any message timeouts; RabbitMQ will redeliver the message only when the worker connection dies. It's fine even if processing a message takes a very, very long time.
AMQP 0-9-1规范的第3.1.8节描述了确认,并且非常清楚,它们可以是自动的(客户端不必做任何事情,消息一经传递就被确认)或显式的(客户端必须为其处理的每条消息或消息组提供一个确认)

这里有一些2009年的讨论证实了这一点


因此:是的,如果您需要一个超时来在某个时间间隔后自动发送NACK,您必须自己执行此操作。

RabbitMQ的现代版本有:

在现代RabbitMQ版本中,对使用者强制执行超时 交货确认书。这有助于检测有缺陷(卡住)的消费者 从不承认交货。这样的使用者可能会影响节点的 磁盘数据压缩,可能会将节点从磁盘空间中挤出

如果消费者未确认其交付超过超时时间 值(默认为15分钟),其频道将以 预处理\u失败的通道异常。该错误将由 消费者连接到的节点

错误消息将是:
连接上的通道错误:操作无导致通道异常前提条件\u失败:通道1上的消费者确认超时


默认情况下,超时为15分钟(900000毫秒),由
rabbitmq.conf

中的
consumer\u Timeout
参数配置,“3分钟超时”在哪里?我认为没有消息超时,除非连接中断。请编辑您的问题,更好地描述您的问题。您使用哪个客户端库连接到代理?如何实现RPC模式?默认值设置在哪里?请尝试此处:您似乎遇到的问题不在RabbiMQ范围内。你的密码在哪里?由于缺乏适当的细节,这个问题应该照样结束。