訊息的確認,是指生產者投遞訊息後,如果broker收到訊息,則會給我們生產者乙個應答
生產者接收應答,用來確定這條訊息是否正常傳送到broker,這種方式也是訊息的可靠性傳遞的核心保障
channel開啟確認模式 channel.confirmselect()
在channel上加監聽:addconfirmlisterer,監聽成功和失敗的返回結果,根據具體結果對訊息進行重新傳送、或記錄日誌等後續處理
return listener用於處理一些不可路由的訊息public class producer
//handlenack 失敗時的處理
//磁碟寫滿 、mq出現異常、queue容量達到上限
@override
public void handleack(long deliverytag, boolean multiple) throws ioexception
//handleack 成功時的處理
//deliverytag訊息的唯一標籤
//multiple 是否批量
});}}
我們的訊息生產者,通過制定乙個exchange和routingkey,把訊息送達到某乙個佇列中去,然後我們消費者監聽佇列,進行消費處理。但是在某些情況下,如果我們在傳送訊息的時候,當前的exchange不存在或指定的路由key路由不到,這個時候我們需要監聽這種不可達的訊息,return listener
mandatory:如果true,則***會接收到路由不可達的訊息,然後後續處理,如果為false,那麼broker自動刪除該訊息
//第三個引數是mandatory,mandatory為true,才能使用return機制
routingkeyerror, true, null, msg.getbytes());
}}
訊息佇列與生產者消費者模型
目錄生產者消費者模型 我們知道程序之間資料是相互隔離的,要想實現程序間的通訊 ipc機制 就必須借助於一些技術才可以,比如multiprocessing模組中的 佇列和管道,這兩種方式都是可以實現程序間資料傳輸的,由於佇列是管道 鎖的方式實現,所以我們著重研究佇列即可 佇列支援多個人從佇列的一端放入...
kafka 生產者訊息分發策略
訊息是kafka中最基本的額資料單元,在kafka中,一條訊息由key value兩部分構成,在傳送一條訊息時,我們可以指定這個key,producer會根據key來判斷當前這條訊息應該 路由儲存到哪個partition。預設情況下,kafka採用的是對key進行hash取模計算出分割槽。如果key...
生產者消費者 生產者與消費者模式
一 什麼是生產者與消費者模式 其實生產者與消費者模式就是乙個多執行緒併發協作的模式,在這個模式中呢,一部分執行緒被用於去生產資料,另一部分執行緒去處理資料,於是便有了形象的生產者與消費者了。而為了更好的優化生產者與消費者的關係,便設立乙個緩衝區,也就相當於乙個資料倉儲,當生產者生產資料時鎖住倉庫,不...