RabbitMQ中隊列有兩種模式
1.默認 Default
2.鏡像 Mirror 【類似於mongoDB,從一直在通過主的操作日志來進行同步】
*如果將隊列定義為鏡像模式,那么這個隊列也將區分主從,從而做到了隊列高可用。【通過一個master(主)和多個slave(從)組成】,消息發布到隊列中將被復制到所有從節點上。消費者連接到主節點上。
如何配置鏡像隊列
只能通過policy進行配置 eg:
1.
rabbitmqctl set_policy ha-all "^ha\." '{"ha-mode":"all"}'
ha-all:策略名稱
^ha\.:隊列名正則表達式
在所有的node中進行同步,也就是主的消息同步到所有從中。
* 如果其中某一個節點掛掉了,再重啟的時候,node的數據是不會再同步的。
解決辦法:將ha-sync-mode設置為automatic【自動同步】
rabbitmqctl sync_queue name 【手動同步】