Golang如何实现监听RabbitMQ队列任务,断线后自动重连的功能?
- 内容介绍
- 文章标签
- 相关推荐
本文共计3578个文字,预计阅读时间需要15分钟。
需求背景:goalng常驻内存任务脚本监听rbmq执行任务,任务脚本由supervisor来管理。当rabbitmq长时间断开连接会出现如图所示问题,进程处于fatal状态。假设因不可抗拒因素导致,如rabbitmq服务器内存满了。
需求背景:
goalng常驻内存任务脚本监听rbmq执行任务
任务脚本由supervisor来管理
当rabbitmq长时间断开连接会出现如下图 进程处于fatal状态
假如因为不可抗拒因素,rabbitmq服务器内存满了或者其它原因导致rabbitmq消息队列服务停止了
如果是短时间的停止重启,supervisor是可以即时唤醒该程序。如果服务器长时间没有恢复正常运行,程序就会出现fatal进程启动失败的状态,此时可以通过告警来提醒开发人员
如果以上告警能时时通知运维人员此问题可以略过了。今天讨论的是如果在长时间断开连接还能在服务器恢复正常情况下自动实现重连。
实现重连方式很多,下面实现方式比较简单
使用通道实现通知通知可以被看作是特殊的请求/回应用例。在一个通知用例中,我们并不关心回应的值,我们只关心回应是否已发生。
本文共计3578个文字,预计阅读时间需要15分钟。
需求背景:goalng常驻内存任务脚本监听rbmq执行任务,任务脚本由supervisor来管理。当rabbitmq长时间断开连接会出现如图所示问题,进程处于fatal状态。假设因不可抗拒因素导致,如rabbitmq服务器内存满了。
需求背景:
goalng常驻内存任务脚本监听rbmq执行任务
任务脚本由supervisor来管理
当rabbitmq长时间断开连接会出现如下图 进程处于fatal状态
假如因为不可抗拒因素,rabbitmq服务器内存满了或者其它原因导致rabbitmq消息队列服务停止了
如果是短时间的停止重启,supervisor是可以即时唤醒该程序。如果服务器长时间没有恢复正常运行,程序就会出现fatal进程启动失败的状态,此时可以通过告警来提醒开发人员
如果以上告警能时时通知运维人员此问题可以略过了。今天讨论的是如果在长时间断开连接还能在服务器恢复正常情况下自动实现重连。
实现重连方式很多,下面实现方式比较简单
使用通道实现通知通知可以被看作是特殊的请求/回应用例。在一个通知用例中,我们并不关心回应的值,我们只关心回应是否已发生。

