[英]What is the server-side timeout in RabbitMQ?
轉到http://rmq.example.com:15672/#/connections顯示打開的連接及其屬性。 一種屬性稱為“超時”。 對於使用RabbitMQ Java客戶端進行的連接,此值設置為600。對於使用node-amqp
庫進行的連接,該值為空白。
我不知道如何更改它,甚至不一定要做什么。 在Java庫中,有一個帶有方法setTimeout
的ConnectionFactory
,但這將以毫秒為單位設置傳遞給Socket.connect
的超時,即,它是客戶端超時,不會傳遞給服務器(並且實際上與服務器不一致) RMQ頁面上顯示的600s)。 我還嘗試過將timeout
, connectionTimeout
和connection_timeout
添加為客戶端屬性,但是這些不會影響timeout
。 實際上,它們分別顯示在客戶端屬性中(通過REST API檢查):
"client_properties":{"connectiontimeout":"40000",
"connectionTimeout":"30000",
"connection_timeout", ... }
我不知道數字“ 600s”是從客戶端發送的還是服務器默認的,甚至不是它的功能。 我正在尋找Java庫和node-amqp
的源代碼以尋求一些證據,但是想問問是否有人對此有更高級的了解。
這是心跳。 唯一顯示這種同義詞的地方是Rabbitmqctl的手冊頁 :
timeout
Connection timeout / negotiated heartbeat interval, in seconds.
在Java客戶端中,這是通過ConnectionFactory.setRequestedHeartbeat(int seconds)
。 我已經讀到心跳對於服務器知道何時斷開連接是必需的,但是我不知道為什么會這樣,因為AMQP是應用程序層協議,而不是傳輸層,並且是傳輸層管理連接的開始和結束時間。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.