簡體   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