当前位置: 首页 > 面试题库 >

ActiveMQ和CachingConnectionFactory的自动重新连接问题

顾宣
2023-03-14
问题内容

我在使用ActiveMQ和Spring时遇到问题CachingConnectionFactory。我像这样设置它们:

<!-- A connection to ActiveMQ --> 
<bean id="myConnectionFactory" 
    class="org.apache.activemq.ActiveMQConnectionFactory">
    <property name="brokerURL" value="${jms.url}"/>
    <property name="userName" value="${jms.username}"/>
    <property name="password" value="${jms.password}"/>
</bean>

<!-- A cached connection to wrap the ActiveMQ connection --> 
<bean id="myCachedConnectionFactory" 
    class="org.springframework.jms.connection.CachingConnectionFactory">
    <property name="targetConnectionFactory" ref="myConnectionFactory"/>
    <property name="sessionCacheSize" value="10"/>
    <property name="reconnectOnException" value="true"/>
</bean>

<!-- A destination in ActiveMQ --> 
<bean id="myDestination" 
    class="org.apache.activemq.command.ActiveMQQueue">
    <constructor-arg value="${jms.queue}" />
</bean>

<!-- A JmsTemplate instance that uses the cached connection and destination --> 
<bean id="myProducerTemplate" 
    class="org.springframework.jms.core.JmsTemplate">
    <property name="connectionFactory" ref="myCachedConnectionFactory"/>
    <property name="defaultDestination" ref="myDestination"/>
</bean>

jms.url 正在使用故障转移传输:

failover:(tcp://firstbox:6166,tcp://secondbox:6166)?timeout=3000

我遇到的问题是,如果一个盒子掉了,我们应该开始在另一个盒子上发送消息,但是它似乎仍在使用旧的连接(每次发送都超时)。如果我重新启动该程序,它将再次连接并且一切正常。

我的理解是ActiveMQConnectionFactory应该自行修复(重新连接到新盒子),并且JmsTemplate每次都应html" target="_blank">请求新连接,因此应该可以。我想知道这是否CachingConnectionFactory可能做得不好(是否在缓存与旧服务器通信的生产者?)。

我在这里想念我需要做的事情吗?我的设置似乎很正常,但找不到其他人遇到此问题。


问题答案:

我遇到的问题是ActiveMQ并未告知CachingConnectionFactory重新连接的时间,因此仍在使用缓存的连接。我用ActiveMQ代替了它,PooledConnectionFactory问题就消失了。



 类似资料:
  • 我有一个Spring Boot应用程序,我使用ElasticsearchTemplate连接到我的ElasticSearch。然而,当它工作时,我关闭了Elasticsearch,每次我使用ElasticTemplate方法时,我都会得到一个组织。elasticsearch。客户运输NoNodeAvailableException。这很好,因为ElasticSearch不起作用。 然而,当Elas

  • 下面是我到目前为止的代码: 有人能解释一下在和情况下我该做什么吗?以及如何知道网络已断开并重新连接?

  • 问题内容: 我正在尝试通过Mongoose设置MongoDB自动重新连接功能。我尝试通过该选项的所有方式均无效,或者至少未发出该事件。 我尝试过的 如果其中之一是正确的,则应触发该事件并在控制台中记录一条消息,但是这永远不会发生。 如果重新连接前有延迟,有人知道如何配置吗? 提前致谢 对于任何寻找到这一点,看看这个和这个问题在猫鼬库。 问题答案: 我和您有同样的问题,而robertklep的解决方

  • 我正在运行一个带有嵌入式derby Db的spring hibernate应用程序,并在jetty上通过自动重新部署运行它。现在,在执行自动重新部署时,我遇到了一个DB连接错误: 现在我的问题是如何在重新部署时关闭连接,以便它可以创建一个新连接,或者我可以使用相同的连接吗? mvc调度程序servlet。xml 网状物xml 应用属性

  • 问题内容: 我正在尝试在我的项目中实现连接Mqtt Broker的目的(同时订阅和发布)。问题是,当我使用订阅功能(实现接口)时,我无法弄清楚如果连接断开,我该如何重新连接。MqttCallback接口具有connectionLost方法,但是对于调试导致连接丢失的调试很有用。我进行了搜索,但找不到建立自动重新连接的方法。您可以提出有关此问题的方法或文档吗? 问题答案: 最好的方法是构造连接逻辑,

  • 我有一个很好的小Spring Boot JPA web应用程序。它部署在Amazon Beanstalk上,并使用Amazon RDS持久化数据。然而,它并不经常使用,因此会在一段时间后失效,这是一种例外: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:从服务器成功接收的最后一个数据包是79,870,633毫秒之前。 成功发送到服务