微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

JMS 连接在连接后关闭并每 30 秒重试一次

如何解决JMS 连接在连接后关闭并每 30 秒重试一次

我正在使用 JMS 创建 DefaultJmsListenerContainerFactory 和 jmstemplate。还使用 Qpid 客户端库“6.4.0”连接到 Qpid 代理。 似乎对于我在启动时连接到的每个 broker 连接是成功的,但在 30 秒后,新连接正在建立并从客户端立即关闭

日志:

AMQConnection - 我们是否已连接:true
AMQConnection -Connected with ProtocolHandler Version:0-9
AMQProtocolHandler - SEND: Frame channelId:0,bodyFrame: [ConnectionCloseBodyImpl: replyCode=200,replyTest=JMS 客户端正在关闭连接。,classId=0,methodId=0]
AMQProtocolHandler -RECV: Frame channelId:0,bodyFrame: [[ConnectionCloseBodyImpl]
AMQProtocolHandler - 客户端调用会话关闭

java 配置示例代码

@Bean("constainerFactory")
public JmsListenerContainerFactory getContainerFactory(@Qualifier("someConnectionFactory") ConnectionFacory connectionFactory){
    DefaultJmsListenerContainerFactory jmsContainerfac = new DefaultJmsListenerContainerFactory();
    jmsContainerfac.setConnectionFactory(connectionFactory);
    jmsContainerfac.setErrorHAndler(...);
    jmsContainerfac.setSessionTransacted(false);
    jmsContainerfac.setMaxMessagesPerTask(1)
    jmsContainerfac.setrecoveryInterval(100000L);
    return jmsContainerfac;
}

@Bean("cachingConnectionFactory")
public CachingConnectionFactory scakaCachingConnectionFactory(@Qualifier("someConnectionFactory") ConnectionFacory connectionFactory){
    CachingConnectionFacotry ccf = new CachingConnectionFacotry();
    ccf.setTargetConnectionfactory(connectionFactory);
    ccf.setSessionCacheSize(5);
    ccf.setReconnectOnException(true);
    return ccf;
}

@Bean
public jmstemplate jmstemplate(@Qualifier("cachingConnectionFactory") ConnectionFacory connectionFactory){
    return new jmstemplate(connectionFactory);
}

我在各种类和 Jsmtempalate 中的侦听器方法上使用 bean“containerFactory”,根据消息和错误发送响应。

我正在尝试解决 30 秒后重新连接的问题,这会导致 qpid 服务器的高流量负载,知道是什么导致了这种行为吗?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。