当前位置: 首页 > news >正文

Rabbitmq 超时异常解决:PRECONDITION_FAILED - Timeout value used: 1800000 ms.

Rabbitmq 超时异常解决:PRECONDITION_FAILED - Timeout value used: 1800000 ms.

在使用 docker 启动 rabbitmq 的时候,执行一个超长时间的任务,出现了报错。
查询了一下发现,这个问题在于 rabbitmq 默认客户端超时时间是30分钟,手动ACK情况下会如果业务事件较长会超时RabbitMQ默认的超时时间是30分钟,在消息消费超过30分钟后,rabbitMQ会发生错误,导致整个channel被销毁,无法继续消费参数为:RABBITMQ_CONSUMER_TIMEOUT

调整

如果是客户端直接安装,则需要修改配置文件
如果是docker安装,还是需要修改配置文件。。。使用env的方式启动容器修改,获取docker-compose中修改是不生效的。

查看

# 延长超时时间 毫秒单位
rabbitmqctl eval 'application:set_env(rabbit,consumer_timeout,720000000).'# 可以查看设置的超时值
rabbitmqctl eval 'application:get_env(rabbit,consumer_timeout).'值得注意的是,这个事临时更改,永久更改需要进入rabbitmq.conf文件里修改,修改consumer_timeout参数

docker 修改配置文件

1. 新增 conf 配置文件

官网: https://www.rabbitmq.com/configure.html#configuration-files

vim rabbitmq.conf
## DEFAULT SETTINGS ARE NOT MEANT TO BE TAKEN STRAIGHT INTO PRODUCTION
## see https://www.rabbitmq.com/configure.html for further information
## on configuring RabbitMQ## allow access to the guest user from anywhere on the network
## https://www.rabbitmq.com/access-control.html#loopback-users
## https://www.rabbitmq.com/production-checklist.html#users
loopback_users.guest = false## Send all logs to stdout/TTY. Necessary to see logs when running via
## a container
log.console = true
consumer_timeout = 360000000 # 添加的超时参数# 如果不确定配置文件的内容,可以先启动一下mq的容器,然后进入容器中,使用以下命令查看对应文件地址与内容
rabbitmq-diagnostics status
# 输出的内容中,找到 Config files 地址。
2. 重新制作容器,映射配置文件
docker run -d --name myrabbit \
-e RABBITMQ_DEFAULT_USER=admin \
-e RABBITMQ_DEFAULT_PASS=admin123 \
-p 15673:15672 -p 5673:5672 -p 25673:25672 -p 1884:1883 \
-v /Users/mzwang/Documents/proj_compose/rabbitmq/rabbitmq.conf:/etc/rabbitmq/rabbitmq.conf \
rabbitmq:3.12-management# 下面的是没有做端口修改的命令
docker run -d --name myrabbit \
-e RABBITMQ_DEFAULT_USER=admin \
-e RABBITMQ_DEFAULT_PASS=admin123 \
-p 15672:15672 -p 5672:5672 -p 25672:25672 -p 1883:1883 \
-v /Users/mzwang/Documents/proj_compose/rabbitmq/rabbitmq.conf:/etc/rabbitmq/rabbitmq.conf \
rabbitmq:3.12-management
3. 确认
进入容器,再次执行,可以看到成功修改。
rabbitmqctl eval 'application:get_env(rabbit,consumer_timeout).'
http://www.lryc.cn/news/306379.html

相关文章:

  • Java架构师之路二、数据库:SQL语言、关系型数据库、非关系型数据库、数据一致性、事务管理等。
  • 【Spring Cloud】高并发带来的问题及常见容错方案
  • springAOP落地实现
  • Linux学习之vi/vim详细介绍
  • 【AIGC大模型】跑通wonder3D (windows)
  • Opencv(2)深浅拷贝与基本绘图(c++python
  • 二叉树与堆
  • 神经网络系列---损失函数
  • LeetCode每日一题 有效的字母异位词(哈希表)
  • 设计模式学习笔记 - 面向对象 - 8.实践:贫血模型和充血模型的原理及实践
  • AI新纪元:可能的盈利之道
  • k8s的svc流量通过iptables和ipvs转发到pod的流程解析
  • 【踩坑】修复报错 you should not try to import numpy from its source directory
  • 预测脱碳企业的信用评级-论文代码复现
  • 目标检测——KITTI目标跟踪数据集
  • 25-k8s集群中-RBAC用户角色资源权限
  • Android 面试问题 2024 版(其二)
  • SpringMVC的异常处理
  • 【计算机网络】1 因特网概述
  • 【Ubuntu】Anaconda的安装和使用
  • OpenAI推出首个AI视频模型Sora:重塑视频创作与体验
  • mybatis总结传参三
  • JSONVUE
  • OSCP靶机--Medjed
  • 【Unity】Unity与安卓交互
  • QYFB-02 无线风力报警仪 风速风向超限声光报警
  • css知识:盒模型盒子塌陷BFC
  • Nginx的反向代理:实现灵活的请求转发和内容缓存
  • 免费享受企业级安全:雷池社区版WAF,高效专业的Web安全的方案
  • 基于SpringBoot的航班进出港管理系统