rabbitmq取消自动重连_rabbitmq客户端自动重连

本文介绍了一种解决RabbitMQ Node.js客户端自动重连问题的方法。通过监听'close'和'error'事件,并使用延迟重试机制,确保在连接丢失后能重新连接。同时,为了避免多次重连,引入了一个isConnecting标志来跟踪连接状态。
摘要由CSDN通过智能技术生成

编程rookie, 如有错误请指出 ☞:

253065903@qq.com

RabbitMQ

Node.js 客户端( AMQP 0-9-1 V0.5.2

)自动重连

重启策略

开始找解决方案:

通过查看AMQP的源码,发现没有reconnect的选项

然后上GitHub上看有没有人提出类似的问题 github repo

,通过输入 reconnect

搜索issue区找到题为 Support Auto-reconnection

的 issue

,发现这个问题是早在 2013

年就提出来的,可是现在还是 open

的状态!

在这个Issue区发现有一个解决方案还是可以实践一下的:

function connectRMQ() {

amqp.connect(config.rabbitmq.URI).then(function(conn) {

conn.on('close', function() {

console.error('Lost connection to RMQ. Reconnecting in 60 seconds...');

return setTimeout(connectRMQ, 60 * 1000);

});

return conn.createChannel().then(function(ch) {

var ok = ch.assertQueue(config.rabbitmq.queue, {durable: true});

ok = ok.then(function() {

ch.prefetch(1);

ch.consume(config.rabbitmq.queue, doWork, {noAck: false});

});

return ok.then(function() {

console.log(" [*] Waiting in %s.", config.rabbitmq.queue);

});

function doWork(msg) {

var body = msg.content.toString();

console.log(" [x] Received %s", body);

setTimeout(function() {

ch.ack(msg);

}, config.rabbitmq.timeout);

}

});

}).then(null, function() {

setTimeout(connectRMQ, 10 * 1000);

return console.log('connection failed');

});

}

connectRMQ();

上述的解决方案是在建立连接之后对连接添加 close

的监听事件,当 close

事件触发,

或者连接出错以及之后的步骤出错都在10s之后重新调用方法本身实现重连

还有一种简单粗暴的方法,监听 close

、 error

事件, 有错误就抛出来,然后依靠外部的守护程序将此客户端重启

实践

按照Issue区发现的解决方案进行实践,修改之前的代码

#

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值