【问题标题】:Activemq consumer can not reconnect automaticallyActivemq 消费者无法自动重新连接
【发布时间】:2016-01-29 13:19:39
【问题描述】:

jms.brokerurl=failover:(tcp://ip:61616?wireFormat.maxInactivityDuration=0)?jms.prefetchPolicy.queuePrefetch\=2&randomize\=false&initialReconnectDelay\=50&timeout\=3000

弹簧配置

<bean id="pooledConnectionFactory" class="org.apache.activemq.pool.PooledConnectionFactory" init-method="start" destroy-method="stop">
    <property name="connectionFactory" ref="jmsConnectionFactory"/>
    <property name="maxConnections" value="10"/>
    <property name="maximumActive" value="10"/>
    <property name="idleTimeout" value="0"/>
</bean>

<bean id="receiveContainer" class="org.springframework.jms.listener.DefaultMessageListenerContainer">
    <property name="connectionFactory" ref="pooledConnectionFactory"/>
    <property name="destination" ref="QUEUE_NAME"/>
    <property name="messageListener" ref="productUpdateListener" />
    <property name="sessionTransacted" value="true"/>
    <property name="autoStartup" value="true"/>
</bean>

【问题讨论】:

  • 消费者服务器中没有找到任何日志,但是Activemq管理页面显示消费者数量为零。
  • 目前日志级别为INFO。
  • 您预计何时重新连接?失败后?

标签: spring activemq


【解决方案1】:

PooledConnectionFactory 在消费者处理完消息后关闭会话/消费者连接。因此消费者数量不断减少。

如果您使用多线程环境,最好使用 CachingConnectionFactory。但这有一些缺点,因为它会缓存消费者,因此如果消费者挂起,客户端会在不知道其连接空闲的情况下继续 ping 停滞的消费者。

您的问题的确切解决方案,很难找到使用 JMS 模板,但您可以通过使用 connection.start()connection.createConnection 方法检查连接是否已关闭来手动创建新连接。

【讨论】:

    猜你喜欢
    • 2021-03-06
    • 2018-05-22
    • 2015-08-03
    • 2010-12-14
    • 2015-07-23
    • 2015-11-25
    • 2019-03-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多