java activemq 断线_activemq 长时间没有消息client会断开吗?
一般来说,不会,因为有心跳检测和重连机制。
断线重连机制是ActiveMQ的高可用性具体体现之一。
具体就是使用failover方式,使得连接断开之后,可以不断的重试连接到一个或多个brokerURL。
例如:failover:(tcp://127.0.0.1:61616) ,这里可以使用多个url。
默认情况下,如果client与broker直接的connection断开,则client会新起一个线程,
不断的从url参数中获取一个url来重试连接。
这个机制对于在容器中使用的connection木有问题。
activemq-core源码的test中也有多个client与broker之间断开重连10次的例子:
可以测试如下:
1、通过命令行启动一个broker
2、在java中创建一个connection,添加一个TransportListener,使用如下代码来根据连接断开与重连。
@Override
public void transportInterupted() {
System.out.println("===>> 断开");
}
@Override
public void transportResumed() {
System.out.println("===>> 重连");
}
3、运行程序
4、停止broker,再启动broker
5、观察到断开与重连
6、再停止broker,发现程序自动退出。
程序退出不再重连的原因在于重连的线程是daemon的,连接出错以后,其他线程都退出了,这个线程也随即被销毁掉了。
官方修复过一次,在ActiveMQ Connection Executor上设置了daemon=false,但是这个线程不一定被创建出来。所以bug依然在。
修复的方法很简单:
reconnectTaskFactory = new TaskRunnerFactory();
reconnectTaskFactory.setDaemon(false); // to set daemon=false by kimmking
reconnectTaskFactory.init();
把重连的线程设置成daemon=false就成。
然后再按照上面的步骤来执行,发现多次重启broker,都是可以自动重连的。
---------------------
作者:kimmking
来源:CSDN
版权声明:本文为博主原创文章,转载请附上博文链接!
java activemq 断线_activemq 长时间没有消息client会断开吗?相关推荐
- 要学完Java大概需要多长时间
学习Java是有一定技巧和方法的,钻牛角尖的去学习它,只能让你感觉到费神费力,最终陷入到无穷无尽的细枝末节之中.然后渐渐的消磨掉你的耐心,直到你放弃. 其实学习任何东西都一样,包括学习Java.刚开始 ...
- 【Python】SQLAlchemy长时间未请求,数据库连接断开的原因、解决方案
这个问题好像和长时间连接数据库但不打开网页时,报错lost connection是一个原因 问题: 写了一个基于apscheduler的定时任务,里面的任务使用了sqlalchemy,大致如下: sc ...
- .net跨防火墙链接oracle连接池链接长时间无通讯数据被断开后报错问题解决
环境: .net 4.0以上使用Oracle.ManagedDataAccess组件链接oracle数据库,应用程序与数据库之间存在硬件防火墙. 症状:应用程序启动后正常访问,如果出现长时间无数据库请 ...
- 生产环境Redis连接,长时间无响应被服务器断开问题
上个月线上生产环境有几个接口出现异常响应,查看生产日志后发现,如下错误 线上Redis客户端使用的是SpringBoot默认的Lettuce客户端,并且没有指定连接池,connection reset ...
- java activemq 断线_java - 防止ActiveMQ重新连接失败时自动退出 - SO中文参考 - www.soinside.com...
我有一个小型的spring-boot应用程序,该应用程序连接到ActiveMQ上的一个或多个主题,这些主题在启动时在应用程序的application.properties文件中设置-然后将这些消息发送 ...
- 零基础,自学JAVA编程需要多长时间才能学完?
现在不少朋友在问:零基础学Java需要花多少时间?在你开始学一门技术之前,你也得进行各个方面的考察,特别是时间方面你得仔细的思考,因为时间短,这是人之喜见的,要是时间长,那么你就会产生焦虑.不安.自我 ...
- 自学Java大概需要多长时间可以入门呢?
其实学java一般要多久?因人而异,例如一个零基础的小白自学java,每天学习8个小时来算,而且在有学习资料的基础上,每天学习,从零到找到工作,起码要半年起步,而且还要有项目经验,否则是不会有公司要你 ...
- 吃一堑长一智!java基础自学多长时间
前言: 都说学历是敲门砖,是一点都没错,即使是在重技术轻学历的互联网企业,面试官对于学历越高的程序员初印象会更好,面试也会更顺利,而大部分专科学历的程序员,除非有过硬的技术,否则想要进入一二线互联网公 ...
- java每隔多长时间执行一次_crontab中如何实现每隔多少天执行一次脚本
crontab中如何实现每隔多少天执行一次脚本 我来答 分享 2个回答 奶油菠萝包sky 来自百度知道认证团队 2018-04-08 1. # 下午6点到早上6点,每隔15分钟执行一次脚本 0,1 ...
最新文章
- 乾坤合一~Linux设备驱动之终端设备驱动
- demo:a spreadsheet-like application
- linux 下mongo 基础配置
- 计算机远程桌面自动关闭,windows10重启之后自动关闭远程桌面是怎么回事
- 送书 | 222Beta多样性限制性排序CPCoA/CCA/RDA/LDA
- 1.6 编程基础之一维数组 03 计算书费 python
- BZOJ 1071组队
- 90%代码如何实现自动迁移到鲲鹏平台?
- 开奖|八大福利,康康你中奖了没?
- 招聘 集群研发工程师
- Firebug Console API
- 【Linux】系统移植篇一--linux系统移植导学
- 陈纪修老师《数学分析》 第04章:微分 笔记
- C语言 之 if 语句
- PyCharm 下载/上传gitlab 代码
- Unity获取系统信息SystemInfo(CPU、显卡、操作系统等信息)
- [翻译]Billy Belceb 病毒编写教程for Win32
- 西华大学计算机科学与技术学院,王秀华 - 西华大学 - 计算机与软件工程学院
- Flutter 淘宝 App,支持 iOS、Android
- 第二章:大数据文件系统之HDFS-CSDN就业班-专题视频课程
热门文章
- mysql数据库表字段使用DESC等关键字报错及解决方法
- 关于如何取消访问https时的提示:“此网站的安全证书存在问题”的解决方法
- eslint 验证vue文件 报错 unexpected token =解决方法
- SSH启动失败解决方法
- vue本地静态图片的路径问题解决方案
- 如何在Java项目中查找未使用/无效的代码
- 在Java中从字符串中删除空格
- 使用“ for”循环遍历字典
- 2020-12-02
- android edittext drawable,android – 在事件上显示复合drawable到EditText