首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Tibco不可追查的脱节

Tibco不可追查的脱节
EN

Stack Overflow用户
提问于 2021-09-27 13:28:28
回答 2查看 70关注 0票数 1

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

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

非常感谢,Adrien

EN

回答 2

Stack Overflow用户

发布于 2021-09-28 17:34:30

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

缺省值是1秒,这通常很低,因为这会导致在目的地上没有消息时频繁地断开连接和重新连接。

票数 0
EN

Stack Overflow用户

发布于 2021-10-08 16:46:39

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

要管理这一点,您需要做两件事:

#1在内存服务器级别,在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客户端库中可用的重新连接机制。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69347501

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档