簡體   English   中英

RabbitMQ/Spring AMQP - 將消息留在隊列中

[英]RabbitMQ/Spring AMQP - Leave message in a queue

我創建了一個 SpringBoot/Spring AMQP 項目,在其中我在 RabbitMQ 隊列上配置了一個偵聽器。 問題:有什么方法可以將消息留在隊列中? 讓我解釋一下:我使用消息並做一些事情(例如保存在數據庫上),如果出現問題,我希望能夠重新使用消息。

提前致謝

您需要考慮使用事務配置您的偵聽器容器,因此當 DB 調用失敗時,事務將回滾,並且不會在 RabbitMQ 上確認 AMQP 消息。

有關更多信息,請參閱文檔: https://docs.spring.io/spring-amqp/docs/current/reference/html/#transactions

我不知道完成此操作的“Spring”方式,但您所描述的是 AMQP 消費者不會自動確認的正常行為。

文檔中

在自動確認模式下,消息在發送后立即被視為成功傳遞。

當您關閉自動確認時,您的消費者必須明確地確認消息,否則它不會出隊(或者如您所說,它將被留在“隊列中”)。 然后,當您確定您的操作成功(並且可能與您的數據庫事務協調)時,您只需在操作結束時簡單地確認消息。

總是有先做什么的問題; 先確認還是先提交數據庫事務? 在不增加復雜性的情況下,您必須根據對您來說問題較少的故障模式來選擇最好的,即您寧願容忍重復消息還是丟失消息?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM