gpt4 book ai didi

java - Solace JMS Consumer 重新连接后停止

转载 作者:行者123 更新时间:2023-12-02 11:19:58 26 4
gpt4 key购买 nike

我在我的项目中使用 solace 作为 JMS 提供程序。我使用 spring CachingConnectionFactory 来检索连接。在该连接上我创建新 session 。我与在该 session 上创建的一个消费者有一个线程。

@Autowired
CachingConnectionFactory ccf;
Connection connection = ccf.createConnection();
Session session = connection.createSession(true, Session.SESSION_TRANSACTED);
MessageConsumer messageConsumer = new session.createConsumer(destination); // This is passed to new thread

我正在做一些故障转移测试。当我从网络连接中拔下服务器时,它失败了。当我再次连接服务器时,我仍然收到相同的异常:

javax.jms.IllegalStateException: Error receiving message - already closed (Tried to call receive on a stopped message consumer.) ...

此外,CachingConnectionFactory 的“reconnectOnException”属性默认设置为“true”(我检查过它是否有效)。

异常似乎很清楚。所以我的问题是:当连接丢失并重新建立时如何处理这种情况/异常?消费者有可能复活吗?或者我应该创建新的消费者和新的线程(我想避免的)?

最佳答案

reconnectOnException 属性将在收到异常后尝试一次重新连接。由于故障转移仍在进行中,因此重新连接可能会失败。

您可以将 Solace API 配置为使用 JNDI 连接工厂中的“重新连接重试”和“重新连接重试等待”属性尝试多次重新连接。这可以通过 SolAdmin 或 CLI 在 Solace 路由器上进行配置。如果您将应用程序配置为重新连接足够长的时间以建立连接,则不应遇到任何异常。否则,当您收到此异常时,您将需要重新创建 session 和消费者。

关于java - Solace JMS Consumer 重新连接后停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50002724/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com