rocketmq發(fā)送失敗怎么處理 rocketmq死信隊(duì)列有什么用?
rocketmq死信隊(duì)列有什么用?死信隊(duì)列用于處理無常使用的消息。當(dāng)一條消息第一次消費(fèi)失敗時(shí),消息隊(duì)列MQ會(huì)自動(dòng)重試該消息;達(dá)到最大重試次數(shù)后,如果消費(fèi)仍然失敗,說明**消費(fèi)者**在正常情況下無確消費(fèi)
rocketmq死信隊(duì)列有什么用?
死信隊(duì)列用于處理無常使用的消息。當(dāng)一條消息第一次消費(fèi)失敗時(shí),消息隊(duì)列MQ會(huì)自動(dòng)重試該消息;達(dá)到最大重試次數(shù)后,如果消費(fèi)仍然失敗,說明**消費(fèi)者**在正常情況下無確消費(fèi)消息。此時(shí),消息隊(duì)列MQ不會(huì)立即丟棄消息,而是將消息發(fā)送到消費(fèi)者對應(yīng)的特殊隊(duì)列。
消息隊(duì)列MQ調(diào)用這個(gè)消息。;正常情況下不會(huì)消耗死信消息,而用于存儲(chǔ)死信消息的特殊隊(duì)列稱為死信隊(duì)列。
高并發(fā)場景下,如何保證生產(chǎn)者投遞到消息中間件的消息不丟失?
您的問題應(yīng)該是指傳遞的一致性,還是如果傳遞成功并收到ack確認(rèn),則消息不存在于消息隊(duì)列中?
第一種情況,一般來說,為了保證消息的正確傳遞,一個(gè)具有acid特性的數(shù)據(jù)庫,比如MySQL,就可以保證消息的正確傳遞。比如rabbitmq有一個(gè)確認(rèn)機(jī)制,一個(gè)回調(diào)機(jī)制,不重復(fù)交付。當(dāng)然,并發(fā)效果可能不是很強(qiáng),但能保證穩(wěn)定性,這要看業(yè)務(wù)場景。
在第二種情況下,基本上不 不用擔(dān)心,很多消息隊(duì)列都有持久化功能,可以保證在一些災(zāi)難情況下不丟失,正常業(yè)務(wù)情況下消息會(huì)被正確消費(fèi)。