`

activemq中参数maxReconnectAttempts是个大坑

阅读更多

现象:

     8月13日同事在测试session-clean-task工具时,发现工具起动后跑着跑着就不跑了,具体情况为:
     1)分配callid的任务还在跑
     2)从队列中获取callid并处理会话的线程不跑了
处理过程:
     1)因没有异常日志,所以怀疑是redis堵了
          操作:
               在从redis队列OnlineSessions_HandingList中获取数据时,如果callid为null,则打日志
          结果:
               重启工具后未见取出的callid为null的日志
     2)因工具的代码中每一个方法、while循环内部都作了try catch异常捕获,不至于这个都会有问题吧(即使有,至少目前没碰到过)
          另外看了看application.properties的配置,发现redis.timeout=60超时时间太短,于是改成了2000ms
          重启工具后,咦好像正常了,可是跑着跑着又不动了
     3)实在不行,开始加日志
          操作:
               在SessionCleanService类中每一个小的逻辑块加一个info日志: task + "---1"    task + "----2" 这样的
          结果:
               每次线程停住时,都指示问题出现在记录数据库会话日志那块
               

 
               确定是数据库操作卡住了,但是袁园过来说明 log_user_session 表中的数据量非常少
               登陆数据库后发现确实如此
     4)继续查找:
               进入logservice.java文件中查看代码,发现在异常后只记录了数据库日志,没有文本日志打屏
               而log_flow_engine_exception表中也没有日志,认为是logging-job没有部署,导致消息未转储所致
               操作:
                    为了方便查看日志,就在异常时打了一个logger.error
               结果:
                    确实记录数据库日志时存在异常,但是异常内容我再现网也见到过,但是现网是正常的啊:
                    

 
                    但是这个异常日志一旦打出来就应该会返回一个false,然后继续往后走才对啊
     5)接下来,把目光定位到了工具往mq里面写异常日志的代码了:
          
          为了验证mq是否存在问题,先是检查了mq的链接串,发现有一个地址链接不上,但是理论上一个地址链接不上也不应该出问题啊
          即便如此,还是把链接不上的地址给去掉了,再次重启,发现问题依旧
     6)在往mq里面记录日志的前后也加了logger.info日志,发现确实在到了记录日志的代码后,后面的日志就再也没打出来了
     7)查看mq的管理系统,发现累计的日志达到了200多W,然后就想,及时mq满了也不应该导致工具一直等在那吧
          后来上网查看mq链接串中的参数说明,就发现端倪了:
          maxReconnectAttempts为-1时,不限制重试次数,也就是说工具会等在那里知道异常信息塞进去!!!
          后来点击了管理页面上mq队列的purge操作后,工具立即就开始运行了。。。
          这个参数一定要改过来,比如重试三次,否则一旦mq满了或者出现问题,所有业务就中断了,以为所有流程引擎都会往mq写日志
          其他业务组件也是

 

 

          
  • 大小: 3.3 KB
  • 大小: 9.5 KB
  • 大小: 42 KB
分享到:
评论

相关推荐

    activeMq的一个小例子

    activeMq的一个小例子activeMq的一个小例子activeMq的一个小例子activeMq的一个小例子activeMq的一个小例子activeMq的一个小例子activeMq的一个小例子activeMq的一个小例子activeMq的一个小例子activeMq的一个小例子...

    ActiveMQ配置参考手册

    用于ACtiveMq 配置插件配置使用,配置介绍等,适合初学者

    ActiveMQ整合Spirng的一个demo

    ActiveMQ整合Spirng的一个demo

    activemq activeMq笔记

    activemq activeMq笔记.docx

    ActiveMQ(中文)参考手册

    ActiveMQ(中文)参考手册 大名鼎鼎的 JMS 实现 Apache ActiveMQ 介绍文档

    activemq-core-5.7.0-API文档-中文版.zip

    赠送jar包:activemq-core-5.7.0.jar; 赠送原API文档:activemq-core-5.7.0-javadoc.jar; 赠送源代码:activemq-core-5.7.0-sources.jar; 包含翻译后的API文档:activemq-core-5.7.0-javadoc-API文档-中文...

    ActiveMQ中文手册

    ActiveMQ中文手册,可以帮助你的开发。

    spring 整合activemq实现自定义动态消息队列

    百度spring整合activemq 发现几乎都只是在xml文件配置固定的消息队列而且太麻烦。并没有根据需求进行动态生成主题和队列。本文档参考了纯粹的... activemq下载文件中有一个demo 包含所有jar包。此处就不上传了。

    activeMQ示例 activeMQ demo,java分布式技术

    请将本maven项目引入你自己的maven项目中(在你自己的pom.xml文件中配置这个项目的gourp和id以及版本号),通过模块化导入,注意把spring-activeMQ.xml加载到容器当中,运行tomcat启动项目,即可看到效果。

    ActiveMQ_in_Action_中文

    ActiveMQ_in_Action_中文ActiveMQ_in_Action_中文ActiveMQ_in_Action_中文ActiveMQ_in_Action_中文

    apache-activemq Linux版本

    apache-activemq Linux版本

    activemq, Apache ActiveMQ镜像.zip

    activemq, Apache ActiveMQ镜像 欢迎来到 Apache ActiveMQis是一个高性能的Apache 2.0许可以消息代理和 JMS 1.1实现。正在启动要帮助你入门,请尝试以下链接:入门http://activemq.apache.org/version-

    activemq-web-console-5.11.2

    activemq-web-console的默认使用方式是通过在activemq.xml中导入jetty.xml配置一个jetty server来实现的。其实activemq-web-console完全可以和activemq-broker分开来部署。 activemq-web-console包含3个apps, 1.一...

    一个jms activemq Topic 消息实例

    一个jms activemq Topic 消息实例 关于jms JMS 是接口,相当于jdbc ,要真正使用它需要某些厂商进行实现 ,即jms provider 常见的jms provider 有 ActiveMQ JBoss 社区所研发的 HornetQ (在jboss6 中默认即可以...

    activeMQ-API.rar

    activeMQ-API.rar

    activemq-protobuf-1.1-API文档-中文版.zip

    赠送jar包:activemq-protobuf-1.1.jar; 赠送原API文档:activemq-protobuf-1.1-javadoc.jar; 赠送源代码:activemq-protobuf-1.1-sources.jar; 包含翻译后的API文档:activemq-protobuf-1.1-javadoc-API文档-...

    activeMQ收发工具.rar

    activeMQ的测试工具,用于发送和接收activeMQ消息,jar包形式的,安装完jdk之后用java -jar xxx.jar命令运行

    ActiveMQ高并发处理方案

    ActiveMQ高并发处理方案ActiveMQ高并发处理方案 超级字数补丁超级字数补丁

Global site tag (gtag.js) - Google Analytics