咕泡Java互聯(lián)網(wǎng)高級(jí)架構(gòu)師
2023-06-21 21:19 作者:a365981109 | 我要投稿
消息應(yīng)答概念
自動(dòng)應(yīng)答
消息發(fā)送后立即被認(rèn)為已經(jīng)傳送成功,這種模式需要在高吞吐量和數(shù)據(jù)傳輸安全性方面做權(quán)衡,因?yàn)檫@種模式如果消息在接收到之前,消費(fèi)者那邊出現(xiàn)連接或者channel關(guān)閉,那么消息就丟失了,當(dāng)然另一方面這種模式消費(fèi)者那邊可以傳遞過(guò)載的消息,沒(méi)有對(duì)傳遞的消息數(shù)量進(jìn)行限制,當(dāng)然這樣有可能使得消費(fèi)者這邊由于接收太多還來(lái)不及處理的消息,導(dǎo)致這些消息的積壓,最終使得內(nèi)存耗盡,最終這些消費(fèi)者線程被操作系統(tǒng)殺死,所以這種模式僅適用在消費(fèi)者可以高效并以某種速率能夠處理這些消息的情況下使用。
手動(dòng)應(yīng)答
A.Channel.basicAck(用于肯定確認(rèn))
RabbitMQ已知道該消息并且成功的處理消息,可以將其丟棄了
B.Channel.basicNack(用于否定確認(rèn))
C.Channel.basicReject(用于否定確認(rèn))
與Channel.basicNack相比少一個(gè)參數(shù)
不處理該消息了直接拒絕,可以將其丟棄了
標(biāo)簽: