共用方式為


批次刪除 Azure 服務匯流排 中的訊息 (預覽)

Azure 服務匯流排 是完全受控的企業整合訊息代理程式,可讓您在分離的應用程式和服務之間傳送和接收訊息。 不過,有時候您可能會想要刪除佇列或訂用帳戶中的訊息,而不處理訊息,例如,如果訊息已過期、損毀或無關。 本文說明如何在 Azure 服務匯流排 批次中刪除訊息。

批次刪除訊息的案例

在某些情況下,您可能想要在 Azure 服務匯流排 中使用批次刪除訊息功能。 以下是其中幾個屬性:

  • 過期的訊息:刪除超過其存留時間 (TTL) 值的訊息,並位於寄不出的信件佇列中。
  • 驗證或處理失敗:移除驗證或處理邏輯失敗且位於寄不出的信件佇列中的訊息。
  • 不相關的訊息:從使用中佇列刪除不再與應用程式邏輯相關的訊息。
  • 處理重複專案或不正確的內容:從使用中佇列移除重複或不正確的訊息。

藉由使用批次刪除訊息功能,您可以在一個作業中刪除佇列或訂用帳戶中的多個訊息,而不是逐一刪除它們。 由於刪除是在服務端完成,因此您不需要在刪除訊息之前接收訊息。 這個方法可將服務要求數目和網路等待時間降至最低。

重要

目前,分割實體不支援 Batch 刪除。 您可以在批次刪除呼叫中刪除最多 4000 則訊息。 批次刪除會盡最大努力完成,且不保證單一 API 呼叫中將會刪除確切的 messageCount。

如何在 服務匯流排批次刪除訊息

您可以在 服務匯流排 Receiver 物件上呼叫 DeleteMessagesAsync 來刪除訊息。 在伺服器端, DeleteMessagesAsync 需要兩個參數: messageCountbeforeEnqueueTime

  • messageCount:要刪除的訊息數目。 服務可能會刪除比此限制少的訊息。
  • beforeEnqueueTime:選擇性的 DateTimeOffset,以 UTC 表示刪除的截止時間。 只會刪除此時間之前加入佇列的訊息。

此外,您可以呼叫 PurgeMessagesAsync 來清除實體中的所有訊息。

使用 Azure SDK 來執行這些作業時,beforeEnqueueTime 參數預設為目前的 UTC 時間 (DateTime.UtcNow())。 請務必確定您提供正確的值,以防止非預期的訊息刪除。

注意

清除作業可能會導致 CPU 使用量增加,因為它牽涉到多個 API 呼叫。 在清除期間,鎖定的訊息不符合移除資格,而且會保留在實體中。

下一步

若要探索 Azure 服務匯流排 功能,請嘗試您選擇的語言範例:

舊版 .NET 和 Java 用戶端程式庫的範例:

在 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 的官方支援和更新。 如需詳細資訊,請參閱支援淘汰公告