我使用RPC模式来处理我的对象与RabbitMQ。你怀疑,我有一个对象,我想让这个过程结束,之后,向RPC客户端发送确认。默认情况下,确认的超时时间约为3分钟。我的过程需要很长时间。我如何更改每个对象的确认超时,或者我必须做什么来处理这些类似的进程?
kgsdhlau1#
RabbitMQ的现代版本有一个传递确认超时:在现代的RabbitMQ版本中,在使用者交付确认时强制执行超时。这有助于检测从不确认交付的错误(卡住)使用者。此类使用者可能会影响节点的磁盘数据压缩,并可能导致节点磁盘空间不足。如果用户未确认其传送的时间超过超时值(默认为30分钟),则其通道将关闭,并出现PRECONDITION_FAILED通道异常错误。用户连接到的节点将记录此错误。错误消息将为:连接〈####〉时发生通道错误:操作none导致通道异常precondition_failed:通道1上的用户确认超时默认超时为30分钟(1,800,000ms)注1,由rabbitmq.conf中的consumer_timeout参数配置。注1:超时时间为15分钟(900,000ms)before RabbitMQ 3.8.17。
rabbitmq.conf
consumer_timeout
dzjeubhm2#
如果您在Docker中运行rabbitmq,您可以使用文件rabbitmq.conf描述卷,然后在卷内创建该文件并设置consumer_timeout,例如:Docker 组成
version: "2.4" services: rabbitmq: image: rabbitmq:3.9.13-management-alpine network_mode: host container_name: 'you name' ports: - 5672:5672 - 15672:15672 ----- if you use gui for rabbit volumes: - /etc/rabbitmq/rabbitmq.conf:/etc/rabbitmq/rabbitmq.conf
您需要创建文件rabbitmq.conf在您的服务器上/等等/兔子mq/文档参数:https://github.com/rabbitmq/rabbitmq-server/blob/v3.8.x/deps/rabbit/docs/rabbitmq.conf.example
2条答案
按热度按时间kgsdhlau1#
RabbitMQ的现代版本有一个传递确认超时:
在现代的RabbitMQ版本中,在使用者交付确认时强制执行超时。这有助于检测从不确认交付的错误(卡住)使用者。此类使用者可能会影响节点的磁盘数据压缩,并可能导致节点磁盘空间不足。
如果用户未确认其传送的时间超过超时值(默认为30分钟),则其通道将关闭,并出现PRECONDITION_FAILED通道异常错误。用户连接到的节点将记录此错误。
错误消息将为:
连接〈####〉时发生通道错误:操作none导致通道异常precondition_failed:通道1上的用户确认超时
默认超时为30分钟(1,800,000ms)注1,由
rabbitmq.conf
中的consumer_timeout
参数配置。注1:超时时间为15分钟(900,000ms)before RabbitMQ 3.8.17。
dzjeubhm2#
如果您在Docker中运行rabbitmq,您可以使用文件rabbitmq.conf描述卷,然后在卷内创建该文件并设置consumer_timeout,例如:
Docker 组成
您需要创建文件
rabbitmq.conf
在您的服务器上
/等等/兔子mq/
文档参数:https://github.com/rabbitmq/rabbitmq-server/blob/v3.8.x/deps/rabbit/docs/rabbitmq.conf.example