單一活躍消費者
更新時間 2024-09-11 15:36:24
最近更新時間: 2024-09-11 15:36:24
分享文章
本章節主要介紹分布式消息服務RabbitMQ的單一活躍消費者特性。
使用場景
單一活躍消費者(Single Active Consumer)表示隊列中可以注冊多個消費者,但是只允許一個消費者消費消息,只有在此消費者出現異常時,才會自動轉移到另一個消費者進行消費。單一活躍消費者適用于需要保證消息消費順序性,同時提供高可靠能力的場景。
說明分布式消息服務RabbitMQ3.8.35版本才提供單一活躍消費者特性。
圖1 單一活躍消費者消費流程


如圖1所示,Producer生產9條消息,由于隊列設置了單一活躍消費者特性,只有Consumer 1在消費消息。
更多關于單一活躍消費者的說明,請參考。
配置方法
在聲明隊列時,可以配置單一活躍消費者,只需要將隊列的“x-single-active-consumer”參數設置為“true”。
- 以下示例演示在Java客戶端設置單一活躍消費者。
Channel ch = ...;
Map<String, Object> arguments = newHashMap<String, Object>();
arguments.put("x-single-active-consumer", true);
ch.queueDeclare("my-queue", false, false, false, arguments);
- 以下示例演示在RabbitMQ WebUI頁面設置單一活躍消費者。
圖2 設置單一活躍消費者


設置完成后,在“Queues”頁面查看隊列特性是否包含單一活躍消費者。如圖3所示,“SAC”即單一活躍消費者。
圖3 查看隊列特性

