繁体   English   中英

Tibco 无法追踪的断开连接

[英]Tibco untraceable deconnection

在我们的生产环境中,我们面临着一个关于 Tibco 和 Spring JMS 的奇怪问题。 尽管队列中有消息,但随机在一周内我们的 Spring JMS(Spring Boot 2.5.2)的MessageListener实现不再从服务器接收消息。 但是,没有报告客户端断开连接错误,因此侦听器仍在侦听。

你有好主意吗? Spring JMS 是否具有“自动重连”机制,无需服务器显式断开连接? 或其他解决问题的想法? 我们还使用 com.tibco.tibjms tibjms 8.0.0 jar 和 tibco-ems tibcrypt 4.1 jar。

非常感谢,阿德里安

您是否在receiveTimeout上设置了org.apache.camel.component.jms.JmsComponent 此超时指定消息侦听器等待接收消息的时间。 如果此超时到期,则消息侦听器将被删除并重新建立。

默认值为 1 秒,这通常非常低,因为当目的地没有消息时,这会导致频繁的连接断开和重新连接。

对此行为的一个可能解释是在 EMS 客户端库中检测不到的网络级别连接丢失。

要管理它,您需要做两件事:

#1 在 EMS 服务器级别,在 tibemsd.conf 文件中添加以下属性:

client_heartbeat_server = 20

server_timeout_client_connection = 90

server_heartbeat_client = 20

client_timeout_server_connection = 90

这些属性启用了一些 EMS 机制,允许检测 EMS 服务器和客户端应用程序之间的连接丢失。

#2 在您的应用程序级别,您应该在 JVM 参数中添加以下属性:

-Dcom.tibco.tibjms.connect.attempts 6, 10000 -Dcom.tibco.tibjms.reconnect.attempts 12, 10000

此外,如果您正在使用连接工厂,则应将以下属性添加到应用程序使用的每个工厂:

addprop factory <YourFactory> url=tcp://<YourServer1>:7222,tcp://<YourServer2>:7222

addprop factory <YourFactory> connect_attempt_count=6

addprop factory <YourFactory> connect_attempt_delay=10000

addprop factory <YourFactory> connect_attempt_timeout=1000

addprop factory <YourFactory> reconnect_attempt_count=12

addprop factory <YourFactory> reconnect_attempt_delay=10000

addprop factory <YourFactory> reconnect_attempt_timeout=1000

这些属性控制 EMS 客户端库中可用的重新连接机制。

通过以上内容,您应该能够检测到连接丢失并自动重新连接。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM