RabbitMQ心跳控制 -- heartbeat


原文地址:

https://blog.csdn.net/jiao_fuyou/article/details/23186407

http://my.oschina.net/hncscwc/blog/195343

heartbeat通常用來檢測通信的對端是否存活(未正常關閉socket連接而異常crash)。其基本原理是檢測對應的socket連接上數據的收發是否正常,如果一段時間內沒有收發數據,則向對端發送一個心跳檢測包,如果一段時間內沒有回應則認為心跳超時,即認為對端可能異常crash了。

rabbitmq也不例外,heatbeat在客戶端和服務端之間用於檢測對端是否正常,即客戶端與服務端之間的tcp鏈接是否正常。

1. heartbeat檢測時間間隔的設置

1). 服務端的設置

heartbeat檢測時間間隔可在配置文件rabbitmq.config中增加配置項{heartbeat,Timeout}進行配置,其中Timeout指定時間間隔,單位為秒。

例如:

如果沒有進行配置,默認的時間間隔為600秒(最新版本3.2.2修改為580秒)

在rabbit.app中有heartbeat的配置項。

2). 客戶端的設置

根據AMQP協議,rabbitmq會通過connection.tune信令將heartbeat檢測時間間隔告知客戶端,客戶端可以根據需要重新設置該值,並通過Connection.tune-ok信令將時間間隔再告訴給rabbitmq,rabbitmq會以客戶端的時間作為該tcp連接上heartbeat檢測的間隔時間。

這里要注意的是:如果時間間隔配置為0,則表示不啟用heartbeat檢測。

C客戶端里:

AMQP_CALL amqp_login(amqp_connection_state_t state, char const *vhost,
                     int channel_max, int frame_max, int heartbeat,
                     amqp_sasl_method_enum sasl_method, ...);

參數heartbeat參數表示心跳頻率,60則表示每60S發一次心跳包

如果啟用了rabbitmq_management的話,從web控制台可以看到客戶端的檢測的時間間隔。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM