RabbitMQ節點關閉後啓動流程圖如下:
1 mnesia:wait_for_tables解釋
如果Mnesia推斷另一個節點(遠程)的拷貝比本地節點的拷貝更新時,初始化時在節點上覆製表可能會導致問題,初始化進程無法處理。在這種情況下,對mnesia:wait_for_tables/2的調用將暫停調用進程,直到遠程節點從其本地磁盤初始化表後通過網絡將表複製到本地節點上。
2 rabbit_table:wait函數調用mnesia:wait_for_tables函數設置的超時時間的配置參數爲mnesia_table_loading_retry_timeout。如果未配置,則設置默認值30000ms。
3 rabbit_table:wait函數調用mnesia:wait_for_tables函數設置的最大嘗試次數的配置參數爲mnesia_table_loading_retry_limit。如果未配置,則設置默認值10次。
4 當關閉整個RabbitMQ集羣時,需要確保在啓動的時候最後關閉的那個節點是第一個啓動的。如果第一個啓動的不是最後關閉的節點,那麼這個節點等待最後關閉的節點啓動。默認重試10次30秒以等待最後關閉的節點啓動。