1. 程式人生 > >Rabbitmq direct 模式:保證一個佇列只對應一個消費者 處理方案

Rabbitmq direct 模式:保證一個佇列只對應一個消費者 處理方案

問題描述:當消費者端在斷網恢復時,在web後臺發現,一個佇列對應了兩個消費者。當出現兩個消費者時,生產者投遞訊息的消費情況為:第一個訊息被斷網前的消費者(即:老的消費者或者叫無效消費者)消費;第二個訊息被斷網後新建的消費者消費;即出現上述情況時,消費者端出現訊息丟失情況。

解決方案: 

1、在消費者端與broker連線時,建立心跳或超時連線。即:當消費者連線超時或沒有心跳時,斷開連線;以下是:Rabbitmq-c客戶端解決方法:


2、解決訊息不丟失:

2.1、新建消費者和斷網前的消費者同名(即:消費者的tag固定,不用隨機值)。


2.2、消費者在消費訊息時,要通過ack確認(即:消費者沒有確認訊息消費不返回ack);


申明:以上為個人分析總結;如有不對歡迎拍磚指正;