.NET RabbitMQ Client HandleBasicDeliver 屬性配置

在分散式系統中,可靠的消息傳遞對業務穩定運行至關重要
RabbitMQ 作為一種高效的消息隊列中間件,為消費者與伺服器之間提供了一套靈活的消息確認機制
BasicAck、BasicReject 和 BasicNack 用於確保消息不會因系統異常或處理失敗而丟失或重複消費
本文簡單紀錄 RabbitMQ 消費者的核心方法 HandleBasicDeliver,並說明配置用途

BasicAck

當消費者成功處理一條消息後,向 RabbitMQ 確認該消息已被消費,隊列可以將消息刪除
避免消息重複投遞,確保消息已經被正確處理

void BasicAck(ulong deliveryTag, bool multiple);

若在 BasicConsume 中設置了 autoAck = true,則無需手動調用 BasicAck
但這會導致 RabbitMQ 自動認為消息已成功處理,可能導致消息丟失

DeliveryTag

用於標識消息的唯一標籤,RabbitMQ 用它來追蹤消息
消費者在收到消息時,RabbitMQ 通過 HandleBasicDeliver 傳遞該標籤

Multiple

設置為 true:批量確認所有小於等於 deliveryTag 的消息
設置為 false:僅確認當前消息

BasicReject

用於拒絕特定的消息,並選擇是否重新投遞
當消費者無法處理某條消息時,拒絕該消息,並選擇是否讓 RabbitMQ 將消息重新投遞給其他消費者
當設置 requeue = true 時,消息可能被同一消費者再次接收到,應設計重試機制避免無限循環

DeliveryTag

消息的唯一標籤,用於標識要拒絕的消息

Requeue

設置為 true:將消息重新投遞到隊列,供其他消費者處理
設置為 false:直接丟棄消息,或將其送到死信隊列(若配置了 DLX)

BasicNack

用於拒絕多條消息,功能類似於 BasicReject,但支持批量操作
功能類似於 BasicReject,但支持一次拒絕多條消息
可用於批量處理未確認的消息

void BasicNack(ulong deliveryTag, bool multiple, bool requeue);

DeliveryTag

消息的唯一標籤,標識要拒絕的最後一條消息

Multiple

設置為 true:拒絕所有小於等於 deliveryTag 的消息
設置為 false:僅拒絕當前消息

Requeue

設置為 true:將消息重新投遞到隊列
設置為 false:丟棄消息或送入死信隊列

方法功能支持批量是否重新投遞適用場景
BasicAck確認消息已成功處理正常消息處理完成
BasicReject拒絕單條消息可選單條消息無法處理
BasicNack拒絕多條消息可選批量拒絕未處理消息
訂閱
通知
guest
8 留言
預約回饋
查看所有留言
trackback

ketoconazole shampoo resource page

ketoconazole shampoo resource page

trackback
2 數月 之前

toradol explained

toradol explained

trackback

ketorolac tromethamine profile

ketorolac tromethamine profile

trackback

minoxidil 2% vs 5% full review

minoxidil 2% vs 5% full review

trackback

sildenafil mechanism overview

sildenafil mechanism overview

trackback

vardenafil priapism risk groups

vardenafil priapism risk groups

trackback

vardenafil food‑related factors

vardenafil food‑related factors

trackback

sinusitis clinical overview

sinusitis clinical overview

string(67) "font-size: 25px; width: 25px; height: 25px;right:10px;bottom:140px;"