ActiveMQ监听器在MQ重启后不再监听问题

news/2025/4/1 11:19:59/

应用的监听器注解

@JmsListener(destination = "TopicName",containerFactory = "FactoryName")

工厂代码

@BeanJmsListenerContainerFactory<?> FactoryName(ConnectionFactory connectionFactory){SimpleJmsListenerContainerFactory factory = new SimpleJmsListenerContainerFactory();factory.setConnectionFactory(connectionFactory);factory.setPubSubDomain(true);return factory;}

修改后的工厂代码

@Beanpublic JmsListenerContainerFactory<?> FactoryName(ConnectionFactory connectionFactory) {DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory();factory.setConnectionFactory(connectionFactory);factory.setPubSubDomain(true); // 启用Topic模式factory.setRecoveryInterval(5000L); // 每5秒尝试恢复连接(关键配置!)return factory;}

优劣势

  • SimpleJmsListenerContainerFactory 的局限性:
    它缺乏可靠的重连机制,无法保证在 MQ 重启后能够恢复监听。
    没有配置重连间隔(如 recoveryInterval),导致重连行为不可控。

  • DefaultJmsListenerContainerFactory 的优势:
    提供了可靠的重连机制,支持自定义重连间隔(如 setRecoveryInterval(5000L))。
    支持会话缓存,能够更高效地恢复监听。
    MQ 重启后,能够自动恢复连接并继续监听消息。

注意:如果必须使用 SimpleJmsListenerContainerFactory,可以在应用层实现自定义的重连逻辑,但这种方式复杂且不够可靠。

总结

第一个代码(使用 SimpleJmsListenerContainerFactory)在 MQ 重启后可能无法实现重新监听,因为它缺乏可靠的重连机制和重连间隔配置。第二个代码(使用 DefaultJmsListenerContainerFactory)通过配置 recoveryInterval 和会话缓存,能够更可靠地恢复监听,因此更适合用于生产环境。


http://www.ppmy.cn/news/1584183.html

相关文章

Postman 如何发送 JSON 格式的 API 请求?

在 Postman 中创建并发送 JSON 格式的请求&#xff0c;让你更加高效地进行 API 测试和开发工作。从新建请求到设置请求头&#xff0c;再到编辑请求体和最终的发送请求&#xff0c;我们将一步步地引导你掌握。 Postman 发送 json 格式的请求教程

django多线程实现原理

一、WSGI服务器的底层支持 多线程处理机制 Django本身不直接管理线程&#xff0c;而是通过WSGI服务器&#xff08;如Gunicorn、uWSGI&#xff09;实现多线程。例如&#xff0c;Gunicorn默认以多线程模式运行&#xff0c;每个请求分配独立线程处理&#xff0c;Django框架代码在线…

甘肃旅游服务平台+论文源码视频演示

4 系统设计 4.1系统概要设计 甘肃旅游服务平台并没有使用C/S结构&#xff0c;而是基于网络浏览器的方式去访问服务器&#xff0c;进而获取需要的数据信息&#xff0c;这种依靠浏览器进行数据访问的模式就是现在用得比较广泛的适用于广域网并且没有网速限制要求的小程序结构&am…

URP渲染管线

一、URP渲染管线的含义 URP渲染管线又名为通用渲染管线&#xff08;Universal Render Pipeline&#xff09; 通用渲染管线&#xff08;Universal Render Pipeline&#xff0c;URP&#xff09;是 SRP 中的一种&#xff0c;URP 旨在提供轻量级、跨平台的渲染功能&#xff0c;适…

HD67596-A1:EtherNet/IP 与 CANopen 的高效桥梁

在工业自动化和智能设备连接的大趋势下&#xff0c;不同网络协议之间的高效转换成为关键需求。本次推出的 HD67596-A1 型号 ADFweb 网关&#xff0c;作为 EtherNet/IP 与 CANopen 之间的转换器&#xff0c;为实现设备的无缝通信提供了可靠解决方案。 HD67596-A1 网关于 2019 年…

Openssl自签证书相关知识

1.前提 检查是否已安装 openssl $ which openssl /usr/bin/openssl 2.建立CA授权中心 2.1.生成ca私钥(ca-prikey.pem) 初始化 OpenSSL 证书颁发机构(CA)的序列号文件 在生成证书时,ca.srl 的初始序列号需正确初始化(如 01),否则可能导致证书冲突 这会将 01 显示在屏幕…

Google 决定终止开源 Android项目

Google 已经决定停止 Android 开源项目&#xff08;AOSP&#xff09;。 AOSP&#xff08;Android Open Source Project&#xff09; 是 Google 主导的开源项目&#xff0c;为所有 Android 设备操作系统提供基础框架和核心组件。它相当于一个「毛坯房」&#xff0c;开发者可自由…

直流滤波器与人工智能产品:科技融合的新篇章|深圳维爱普

在科技日新月异的今天&#xff0c;直流滤波器与人工智能产品这两个看似不相关的领域&#xff0c;实则正悄然交织出一幅科技融合的新画卷。直流滤波器&#xff0c;作为电力电子领域的重要组件&#xff0c;以其独特的功能为电力系统的稳定运行保驾护航&#xff1b;而人工智能产品…