Jboss 客户端会话由HornetQ关闭
我们在HornetQ中遇到了以下异常(HornetQ 2.2.5 GA,JBoss 4.3.3,InVM连接器。客户端和服务器都在同一台机器上): hornetq故障检查线程,检测到连接故障:未从invm接收数据:0。 错误代码为3(即HornetQException.CONNECTION\u TIMEDOUT) 这将导致RemotingServiceImpl.FailureCheckAndFlushThread运行,该线程多次写入以下日志: 客户端连接失败,正在清除会话95406085-7b3a-11e2-86d3-005056b14e26的资源 请注意,在我们的应用程序中,我们重用了ClientSessions。我们每个连接有一个ClientSession实例(我们打开了多个连接,每个客户端一个),上述问题导致其中一个会话关闭 读完这篇文章: 我知道我们需要在ServerLocator实例(用于创建创建ClientSessionFactory以创建ClientSessions)上配置以下内容: 此配置解决了问题,并且没有再现上述错误 我们的问题是,如果HornetQ出于其他原因再次关闭会话,我们如何创建新会话而不是关闭的会话? 我这样问是因为在我们发现会话被关闭之后(在我们设置clientFailure和clientTTL值之前),我们试图通过调用ClientSessionFactory实例上的createSession(false、true、true)方法来创建一个新的会话(我们在系统启动时只创建一次该实例,并从那时起继续)它失败了,出现以下错误: HornetQException[错误代码=0消息=创建会话失败] 因此,我们没有成功地创建新会话,唯一的解决方案是重新启动JBossJboss 客户端会话由HornetQ关闭,jboss,jms,hornetq,Jboss,Jms,Hornetq,我们在HornetQ中遇到了以下异常(HornetQ 2.2.5 GA,JBoss 4.3.3,InVM连接器。客户端和服务器都在同一台机器上): hornetq故障检查线程,检测到连接故障:未从invm接收数据:0。 错误代码为3(即HornetQException.CONNECTION\u TIMEDOUT) 这将导致RemotingServiceImpl.FailureCheckAndFlushThread运行,该线程多次写入以下日志: 客户端连接失败,正在清除会话95406085-7b3
请注意,我们无法在客户端站点上重新启动应用程序,因此我们需要找到一种方法来创建新会话,以防旧会话因某种原因关闭。与其这样做,不如配置“重试”并使用适当的值,这样您的连接将重新连接 但是,由于您使用的是inVM,并且只要不停止服务器,您就可以使用该配置。但是,如果只想重新启动服务器,则可以使用“重新连接重试”(-1),然后重新连接或重新创建会话
无论如何,我建议您使用2.2.5之后的更新版本。Clebert,在hornetq 2.3.0.CR1中,是您所指的设置-1是的,我会看看activemq artemis,它现在是上游
ServerLocator locator = HornetQClient.createServerLocatorWithoutHA(connectorConfig);
locator.setClientFailureCheckPeriod(Long.MAX_VALUE);
locator.setConnectionTTL(-1);