批次刪除 Azure 服務匯流排 中的訊息 (預覽)
Azure 服務匯流排 是完全受控的企業整合訊息代理程式,可讓您在分離的應用程式與服務之間傳送和接收訊息。 不過,有時候您可能會想要刪除佇列或訂用帳戶中的訊息,而不處理訊息,例如,如果訊息已過期、損毀或無關。 本文說明如何在 Azure 服務匯流排 中以批次方式刪除訊息。
批次刪除訊息的案例
在某些情況下,您可能想要在 Azure 服務匯流排 中使用批次刪除訊息功能。 以下是其中幾個屬性:
- 過期的訊息:刪除超過其存留時間 (TTL) 值的訊息,並位於寄不出的信件佇列中。
- 驗證或處理失敗:移除驗證或處理邏輯失敗且位於寄不出的信件佇列中的訊息。
- 不相關的訊息:從使用中佇列刪除不再與應用程式邏輯相關的訊息。
- 處理重複專案或不正確的內容:從使用中佇列移除重複或不正確的訊息。
藉由使用批次刪除訊息功能,您可以在一個作業中刪除佇列或訂用帳戶中的多個訊息,而不是逐一刪除它們。 由於刪除是在服務端完成,因此您不需要在刪除訊息之前接收訊息。 這個方法可將服務要求數目和網路等待時間降至最低。
重要
目前,分割實體不支援 Batch 刪除。 您可以在批次刪除呼叫中刪除最多 4000 則訊息。 批次刪除會盡最大努力完成,且不保證單一 API 呼叫中將會刪除確切的 messageCount。
如何在 服務匯流排 中批次刪除訊息
您可以在 服務匯流排 Receiver 物件上呼叫 DeleteMessagesAsync 來刪除訊息。 在伺服器端, DeleteMessagesAsync
需要兩個參數: messageCount
和 beforeEnqueueTime
。
messageCount
:要刪除的訊息數目。 服務可能會刪除比此限制少的訊息。beforeEnqueueTime
:選擇性的 DateTimeOffset,以 UTC 表示刪除的截止時間。 只會刪除此時間之前加入佇列的訊息。
此外,您可以呼叫 PurgeMessagesAsync 來清除實體中的所有訊息。
使用 Azure 入口網站
您也可以使用 Azure 入口網站 上可用的 服務匯流排 總管,從實體清除訊息。 您可以遵循下列步驟來清除訊息:
- 在您要刪除訊息的實體上,流覽至 [服務匯流排 總管] 刀鋒視窗。
- 在 [服務匯流排 總管] 下拉式清單中選擇 [接收模式]。
- 按兩下 [清除訊息] 選項,如快照集中所示。
- 會出現另一個對話框,輸入 『purge』 來執行清除訊息作業。
使用 Azure SDK 來執行這些作業時,beforeEnqueueTime 參數預設為目前的 UTC 時間 (DateTime.UtcNow())。 請務必確定您提供正確的值,以防止非預期的訊息刪除。
注意
清除作業可能會導致 CPU 使用量增加,因為它牽涉到多個 API 呼叫。 在清除期間,鎖定的訊息不符合移除資格,而且會保留在實體中。
下一步
若要探索 Azure 服務匯流排 功能,請嘗試您選擇的語言範例:
- 適用於 .NET (最新版) 的 Azure 服務匯流排用戶端程式庫範例
- 適用於 JAVA (最新版) 的 Azure 服務匯流排用戶端程式庫範例
- 適用於 Python 的 Azure 服務匯流排用戶端程式庫範例
- 適用於 JavaScript 的 Azure 服務匯流排用戶端程式庫範例
- 適用於 TypeScript 的 Azure 服務匯流排用戶端程式庫範例
舊版 .NET 和 Java 用戶端程式庫的範例:
- 適用於 .NET 的 Azure 服務匯流排用戶端程式庫範例 (舊版) (英文):請參閱預先擷取範例。
- 適用於 JAVA 的 Azure 服務匯流排用戶端程式庫範例 (舊版) (英文):請參閱預先擷取範例。
在 2026 年 9 月 30 日,我們將淘汰不符合 Azure SDK 準則的 Azure 服務匯流排 SDK 程式庫 WindowsAzure.ServiceBus、Microsoft.Azure.ServiceBus 和 com.microsoft.azure.servicebus。 我們也將結束 SBMP 通訊協定的支援,因此您將無法在 2026 年 9 月 30 日之後再使用此通訊協定。 請在該日期之前移轉至最新的 Azure SDK 程式庫,該程式庫提供重要的安全性更新和改進的功能。
雖然較舊的程式庫仍可在 2026 年 9 月 30 日之後使用,但它們將不再收到 Microsoft 的官方支援和更新。 如需詳細資訊,請參閱支援淘汰公告。