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

2023-10-31

编程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区发现的解决方案进行实践,修改之前的代码

#

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

rabbitmq取消自动重连_rabbitmq客户端自动重连 的相关文章

  • redis持久化-归纳

    部分参考地址 较详细 https baijiahao baidu com s id 1654694618189745916 简明扼要 https blog csdn net qq 39291929 article details 10343
  • 数据库相关及SQL语句(MySQL和SqlServer)基础

    以下是我自己开发的总结 欢迎指正 0 概括 sql语句的大小写问题 要根据数据库的大小写敏感配置而决定 以下随意 数据库建模软件PowerDesigner要熟练使用 了解物理模型生成建表sql和对数据库进行逆向工程建模 会操作即可 sqls
  • Vue2 与Vue3的区别?面试题

    Vue 2和Vue 3是Vue js框架的不同版本 在面试中经常涉及到它们之间的区别 以下是Vue 2和Vue 3的主要区别 性能提升 Vue 3在性能方面进行了优化 Vue 3引入了更高效的Diff算法 提高了渲染性能 此外 Vue 3还
  • sqlserver新增主键自增_SQLSERVER自增主键

    SQLSERVER自增主键 SQLServer 中含自增主键的表 通常不能直接指定ID值插入 可以采用以下方法插入 1 SQLServer 自增主键创建语法 identity seed increment 其中 seed 起始值 incre
  • 连续正弦信号使用FFT做频谱分析

    一个偶对称的连续波 如何用FFT做频谱分析 用正弦信号做了个例子 不论任何连续信号 都可以仿照这个例子进行频谱分析 Name sinfft m Desc 使用FFT求y sin 2 pi 10 t 的频谱 抽样频率为40hz 大于信号最高频
  • java8 list统计(求和、最大、最小、平均)

    list stream mapToDouble User getHeight sum 和 list stream mapToDouble User getHeight max 最大 list stream mapToDouble User
  • 单片机串口数据处理(1)——串口中断发送数据

    实时性在嵌入式开发中的非常重要 优化MCU串口传输处理方式可以提高嵌入式系统的实时性 在互联网上学习并亲自实验 基于STM32单片机 后 我将分两次介绍优化MCU串口收发数据的方法 参考资料将在第二篇博客中列出 第一次先介绍串口发送数据的优
  • 二维离散傅里叶变换——数字图像处理学习六(C++版)

    一 名词解释 FT Fourier Transform 傅里叶变换 傅立叶变换 表示能将满足一定条件的某个函数表示成三角函数或者它们的积分的线性组合 在不同的研究领域 傅立叶变换具有多种不同的变体形式 如连续傅立叶变换和离散傅立叶变换 1
  • Android开发中的SharedPreferences

    在Android开发app过程中 总会有需要存储较多的一些琐碎东西 比如存储CheckBox是否勾选结果 存储临时文件与数据 数据量比较少 但是名目多 这样使用数据库就很麻烦 而且有一种杀鸡用牛刀的感觉 对于这种数据比较好的一种存储方式就是
  • 微信小程序——点击某个按钮实现下面弹窗的出现

    效果图 真的是图 wxml 代码里面有解释
  • Eclipse中FindBugs插件的使用和安装

    FindBugs这个工具 就可以在不实际运行程序的情况对软件进行分析 它可以帮助改进代码的质量 安装步骤参考 http findbugs cs umd edu eclipse 安装后重启Eclipse 使用方法 右击点击你要检查的项目选择
  • Microsemi Libero使用技巧7——离线安装IP Core

    文章目录 离线下载IP Core 离线安装IP Core 交流群 系列教程 Microsemi Libero系列教程 离线下载IP Core 如果你的Libero软件不能联网自动获取最新版的IP Core 或者是某些IP Core搜索不到
  • E: Unable to locate package nvidia,解决docker容器下nvidia驱动安问题,重新安装

    如果提示E Unable to locate package nvidia apt get update apt get install sudo 安装sudo sudo apt get install sofware properties
  • 华为OD机试 - 查找树中元素(Java)

    题目描述 已知树形结构的所有节点信息 现要求根据输入坐标 x y 找到该节点保存的内容值 其中x表示节点所在的层数 根节点位于第0层 根节点的子节点位于第1层 依次类推 y表示节点在该层内的相对偏移 从左至右 第一个节点偏移0 第二个节点偏
  • MySQL 学习笔记(基础)

    首先解释数据库DataBase DB 即存储数据的仓库 数据经过有组织的存储 数据库管理系统DataBase Management System DBMS 管理数据库的软件 SQL Structured Query Language 结构化
  • python操控xlsx

    pywin32 一个简单的打开关闭 注意office要正版激活 pip install pywin32 import time import os import win32com client as win32 Start excel os
  • C#中 yield return 与 yield break

    using System using System Collections public class List public bool onOff false public static IEnumerable ForExample yie
  • Java环境搭建 包括(JDK+idea IDE集成开发环境)

    为什么要搭建环境 写代码在哪里写 其实哪里都可以写的大佬 只要可以写出代码即可 代码写完了怎么运行 怎么看到效果 需要java运行环境啊大佬 Java代码运行环境 一次编译处处可用 Java虚拟机 也称JVM Java运行代码 JRE包括J

随机推荐