【问题标题】:Spring boot JMS reconnects infinitely in wildflySpring Boot JMS 在 Wildfly 中无限重新连接
【发布时间】:2020-05-24 21:28:26
【问题描述】:

我有一个 Spring Boot 应用程序,其不同部分通过 JMS 连接。我使用外部 ActiveMQ Artemis(在不同的 docker 容器中)。

当我通过 gradle bootRun 运行 Spring Boot 应用程序时,一切正常 - 消息传递时不会丢失。

但是当我在 Wildfly 中运行应用程序时,并非所有消息都已传递。一些消息丢失(大约一半)。我在 Wildfly 中使用 pooled connection factory 配置外部消息代理,并执行用于创建 outbound-socket-bindingremote-connectorpooled-connection-factory 的命令。

在 Wildfly 的日志中,我得到了很多:

2020-05-24 20:52:28,508 DEBUG [org.apache.activemq.artemis.service.extensions.xa.recovery] (Periodic Recovery) looking for recover at ClientSessionImpl [name=44c73a79-9dff-11ea-8d1c-0242ac110004, username=null, closed=false, factory = org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl@2af3f7bd, metaData=()]@410fad2f configuration [XARecoveryConfig [transportConfiguration=[TransportConfiguration(name=, factory=org-apache-activemq-artemis-core-remoting-impl-netty-NettyConnectorFactory) ?port=61616&localAddress=0-0-0-0&host=my-host], discoveryConfiguration=null, username=null, password=****, JNDI_NAME=java:/jms/remoteArtemisJms]]

并且在 ActiveMQ 日志中永久出现:

2020-05-24 21:16:18,063 DEBUG [org.apache.activemq.artemis.core.server.impl.QueueImpl] QueueImpl[name=30b977b0-ac39-431e-9957-2a9ac1f8b64f, postOffice=PostOfficeImpl [server=ActiveMQServerImpl::serverUUID=0b678ade-9de8-11ea-9475-0242ac110002], temp=true]@3a205718 adding consumer ServerConsumerImpl [id=1860, filter=null, binding=LocalQueueBinding [address=jms.topic.tasks, queue=QueueImpl[name=30b977b0-ac39-431e-9957-2a9ac1f8b64f, postOffice=PostOfficeImpl [server=ActiveMQServerImpl::serverUUID=0b678ade-9de8-11ea-9475-0242ac110002], temp=true]@3a205718, filter=null, name=30b977b0-ac39-431e-9957-2a9ac1f8b64f, clusterName=30b977b0-ac39-431e-9957-2a9ac1f8b64f0b678ade-9de8-11ea-9475-0242ac110002]]

对于每个队列或主题。看起来像是永久重新连接。

当我启动 Wildfly 应用程序时,ActiveMQ 管理控制台闪烁(左侧菜单中的图标变为灰色)。当我停止应用程序时,管理控制台中的闪烁停止,菜单项为绿色。

所以,问题:

  1. 如何排查和修复 Wildfly 中的消息传递问题(永久重新连接)?
  2. 什么是定期恢复?为什么会发生?
  3. ActiveMQ 管理控制台中的绿色和灰色图标是什么意思?它为什么会闪烁以及如何解决?

【问题讨论】:

    标签: spring-boot wildfly activemq-artemis


    【解决方案1】:

    所以,似乎是配置问题。我做什么:

    1. 将 spring activemq 启动器更改为 artemis
    2. 为队列和主题创建不同的连接工厂
    3. 使用第 2 页中的连接工厂为不同的主题和队列创建不同的 DefaultMessageListenerContainer

    现在一切正常。

    【讨论】:

      猜你喜欢
      • 2019-12-26
      • 2022-01-07
      • 2018-12-19
      • 2018-09-06
      • 2016-12-31
      • 2019-05-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多