使用RabbitMQ的延遲消息功能時(shí)候,必須注意它的延遲極限是4294967296毫秒

問題小結(jié)

在明確了問題原因之后,需要對該功能的時(shí)候做一些明確的限定(延遲時(shí)間的極限),以避免再次出現(xiàn)類似的問題。深入探索下去,這里的失敗主要與消息的過期時(shí)間(TTL)有直接的關(guān)系。在RabbitMQ中,消息的過期時(shí)間必須是非負(fù) 32 位整數(shù),即:0 <= n <= 2^32-1,以毫秒為單位。 其中,2^32-1 = 4294967295。


這里我們可以嘗試下面兩個(gè)請求,分別設(shè)置延遲時(shí)間為4294967295何4294967296:


curl localhost:8080/sendMessage?message=hello&delay=4294967295

curl localhost:8080/sendMessage?message=hello&delay=4294967296

可以發(fā)現(xiàn),當(dāng)延遲時(shí)間為4294967295毫秒的時(shí)候,延遲消息工作正常;當(dāng)延遲時(shí)間為4294967296毫秒的時(shí)候,消息被直接消費(fèi),沒有延遲效果。


所以,我們在使用RabbitMQ的延遲消息功能時(shí)候,必須注意它的延遲極限是4294967296毫秒。如果你的業(yè)務(wù)需求會(huì)超過這個(gè)臨界值,就必須避開這個(gè)坑,采用其他方法來實(shí)現(xiàn)需要延遲或者定時(shí)執(zhí)行的任務(wù)了。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容