ActiveMQ断开,消费者重连一段时间后进程崩溃退出的问题

本文分析了ActiveMQ在断开连接后,消费者进程有时会崩溃不重连的问题。问题源于心跳检测失败后,由于重连线程是守护线程,当它是唯一线程时,JVM会退出。解决方案包括将重连线程设为非守护线程或者添加额外的非守护线程保持JVM运行。此外,文章建议考虑使用更现代的消息队列如RocketMQ替代ActiveMQ。
摘要由CSDN通过智能技术生成

问题

最近遇到一个问题(activemq版本为5.14.5),正常ActiveMQ断开后,因为有因为有心跳检测和重连机制,使用failover方式,消费者其实是会不断的尝试重连,进程应该是一直存在的。但是奇怪的是有的进程的消费者在mq断开后进程会直接挂掉,没有日志输出也不再重连了。
主进程如下,消费者代码就是正常的设置监听器(MessageListener)的代码,就不贴了。

/**
 * @author ZZJ
 * @description:
 * @date 2020-9-9 9:46
 */
public class ActiveMQTest {
   

    public static void main(String[] args) {
   

        ActiveMQConsumer activeMQConsumer = new ActiveMQConsumer();
        activeMQConsumer.consume();
    }
}

原因

通过对比发现,只有进程中仅消费者线程独立运行的进程会出现这样的问题,经过一段时间的查询后发现,这是

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值