gpt4 book ai didi

jboss - ClientSession 被 HornetQ 关闭

转载 作者:行者123 更新时间:2023-12-03 03:08:15 24 4
gpt4 key购买 nike

我们在HornetQ中遇到了以下异常(使用HornetQ 2.2.5 GA和JBoss 4.3.3,使用InVM连接器。客户端和服务器都在同一台机器上):

hornetq-failure-check-thread,检测到连接失败:未从 invm:0 接收数据。错误代码为3(即HornetQException.CONNECTION_TIMEDOUT)。

这会导致 RemotingServiceImpl.FailureCheckAndFlushThread 运行,并多次写入以下日志:

客户端连接失败,正在清理 session 95406085-7b3a-11e2-86d3-005056b14e26 的资源

请注意,在我们的应用程序中,我们重用了 ClientSession。我们每个连接都有一个 ClientSession 实例(我们打开多个连接,每个客户端一个),上述问题导致其中一个 session 被关闭。

读完这篇文章后:Connection timeout issues - Connection failure has been detected

我知道我们需要在 ServerLocator 实例上配置以下内容(用于创建创建 ClientSession 的 ClientSessionFactory):

ServerLocator locator = HornetQClient.createServerLocatorWithoutHA(connectorConfig);
locator.setClientFailureCheckPeriod(Long.MAX_VALUE);
locator.setConnectionTTL(-1);

此配置解决了问题,并且没有重现上述错误。

我们的问题如下 - 如果 HornetQ 由于其他原因再次关闭 session ,我们如何创建新 session 而不是已关闭的 session ?

我问这个是因为在我们发现 session 已关闭之后(并且在设置 clientFailure 和 clientTTL 值之前),我们尝试通过调用 createSession(false, true, true)来创建新 session ClientSessionFactory 实例上的/em> 方法(我们仅在系统启动时创建该实例一次,然后重新启动它),并且失败并出现以下错误:

HornetQException[errorCode=0 message=无法创建 session ]

所以我们没有成功创建新 session ,唯一的解决方案是重新启动 JBoss。

请注意,我们无法在客户端站点上重新启动应用程序,因此我们需要找到一种方法来创建新 session ,以防旧 session 因某种原因关闭。

最佳答案

您可能应该配置重试并使用正确的值,而不是这样做,这样您的连接就会重新连接。

但是由于您使用的是 inVM,并且只要您不停止服务器,您就应该可以使用该配置。但是,如果您打算仅重新启动服务器,则可以使用 reconnectionRetry (-1),并且 session 将无缝地重新连接或重新创建。

无论如何,我建议您使用 2.2.5 以上的新版本。

关于jboss - ClientSession 被 HornetQ 关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14979153/

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