您好,登錄后才能下訂單哦!
這篇文章主要介紹“RabbitMq消息發送確認有哪些注意事項”,在日常操作中,相信很多人在RabbitMq消息發送確認有哪些注意事項問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”RabbitMq消息發送確認有哪些注意事項”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
生產者發送消息,是先發送消息到Exchange,然后Exchange再路由到Queue。這中間就需要確認兩個事情,第一,消息是否成功發送到Exchange;第二,消息是否正確的通過Exchange路由到Queue。
spring提供了兩個回調函數來處理這兩種消息發送確認。
實現ConfirmCallback并重寫confirm(CorrelationData correlationData, boolean ack, String cause)回調方法,可以確認消息是否發送到Exchange。
實現ReturnCallback并重寫returnedMessage(Message message, int replyCode, String replyText, String exchange, String routingKey)回調方法,可以確認消息從EXchange路由到Queue失敗。注意:這里的回調是一個失敗回調,只有消息從Exchange路由到Queue失敗才會回調這個方法。
注意,若需要以上兩個回調函數生效,需要添加配置
配置文件:
# 開啟發送確認
spring.rabbitmq.publisher-confirms=true
# 開啟發送失敗退回
spring.rabbitmq.publisher-returns=true
#指定消息在沒有被隊列接收時是否強行退回還是直接丟棄
spring.rabbitmq.template.mandatory=true
mandatory的作用:
當mandatory標志位設置為true時,如果exchange根據自身類型和消息routingKey無法找到一個合適的queue存儲消息,那么broker會調用basic.return方法將消息返還給生產者;當mandatory設置為false時,出現上述情況broker會直接將消息丟棄;通俗的講,mandatory標志告訴broker代理服務器至少將消息route到一個隊列中,否則就將消息return給發送者;
到此,關于“RabbitMq消息發送確認有哪些注意事項”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。