Teilen über


Batchlöschung von Nachrichten in Azure Service Bus (Vorschau)

Azure Service Bus ist ein vollständig verwalteter Nachrichtenbroker für die Unternehmensintegration, mit dem Sie Nachrichten zwischen entkoppelten Anwendungen und Diensten senden und empfangen können. Es kann jedoch vorkommen, dass Sie Nachrichten aus einer Warteschlange oder einem Abonnement löschen möchten, ohne sie zu verarbeiten, z. B. wenn sie abgelaufen, beschädigt oder irrelevant sind. In diesem Artikel wird erläutert, wie Sie Nachrichten in Azure Service Bus in Batches löschen.

Szenarien für die Batchlöschung von Nachrichten

Es gibt mehrere Szenarien, in denen Sie das Feature für die Batchlöschung von Nachrichten in Azure Service Bus verwenden können. Einige davon sind die folgenden:

  • Abgelaufene Nachrichten: Löschen Sie Nachrichten, die ihren TTL-Wert (Time to Live, Gültigkeitsdauer) überschreiten und sich in der Warteschlange für unzustellbare Nachrichten befinden.
  • Fehler bei der Prüfung oder Verarbeitung: Entfernen Sie Nachrichten, bei denen in der Prüfungs- oder Verarbeitungslogik ein Fehler aufgetreten ist und die sich in der Warteschlange für unzustellbare Nachrichten befinden.
  • Irrelevante Nachrichten: Löschen Sie Nachrichten, die für Ihre Anwendungslogik nicht mehr relevant sind, aus der aktiven Warteschlange.
  • Behandeln von Duplikaten oder falschen Inhalten: Entfernen Sie doppelte oder falsche Nachrichten aus der aktiven Warteschlange.

Mithilfe des Features für die Batchlöschung von Nachrichten können Sie in einem einzigen Vorgang mehrere Nachrichten aus einer Warteschlange oder einem Abonnement löschen, anstatt sie einzeln zu löschen. Da das Löschen auf der Dienstseite erfolgt, müssen Sie die Nachrichten nicht empfangen, bevor Sie sie löschen. Diese Methode minimiert sowohl die Anzahl von Dienstanforderungen als auch die Netzwerklatenz.

Wichtig

Derzeit wird die Batchlöschung mit partitionierten Entitäten nicht unterstützt. Sie können maximal 4.000 Nachrichten in einem Batchlöschaufruf löschen. Die Batchlöschung erfolgt nach bestem Bemühen und garantiert nicht, dass die genaue Anzahl von Nachrichten (messageCount) in einem einzelnen API-Aufruf gelöscht wird.

Durchführen einer Batchlöschung von Nachrichten in Service Bus

Sie können Nachrichten löschen, indem Sie DeleteMessagesAsync für das Service Bus-Empfängerobjekt aufrufen. Auf serverseitiger Seite erfordert DeleteMessagesAsync zwei Parameter: messageCount und beforeEnqueueTime.

  • messageCount: Die gewünschte Anzahl der zu löschenden Nachrichten. Der Dienst löscht möglicherweise weniger Nachrichten als diesen Grenzwert.
  • beforeEnqueueTime: Ein optionaler DateTimeOffset-Wert in koordinierter Weltzeit (Coordinated Universal Time, UTC), der die Endzeit für den Löschvorgang darstellt. Es werden nur Nachrichten gelöscht, die vor diesem Zeitpunkt in die Warteschlange eingereiht wurden.

Darüber hinaus können Sie PurgeMessagesAsync aufrufen, um alle Nachrichten aus der Entität endgültig zu löschen.

Über das Azure-Portal

Sie können Nachrichten auch über den Service Bus Explorer löschen, der im Azure-Portal verfügbar ist. Führen Sie die folgenden Schritte aus, um Nachrichten zu löschen:

  1. Navigieren Sie zum Blatt „Service Bus Explorer“ der Entität, aus der Sie Nachrichten löschen möchten.
  2. Wählen Sie in der Dropdownliste im Service Bus Explorer „Empfangsmodus“ aus.

Screenshot der Dropdownliste mit ausgewählter Option „Empfangsmodus“

  1. Wählen Sie die Option zum Löschen von Nachrichten aus, wie im Screenshot dargestellt.

Screenshot der ausgewählten Option „Nachrichten löschen“

  1. Ein weiteres Dialogfeld wird angezeigt. Geben Sie dort „Löschen“ ein, um den Vorgang zum Löschen der Nachrichten auszuführen.

Screenshot der Eingabe von „Löschen“ zur Bestätigung

Wenn Sie Azure SDKs zum Ausführen dieser Vorgänge verwenden, ist der beforeEnqueueTime-Parameter standardmäßig auf die aktuelle UTC-Uhrzeit (DateTime.UtcNow()) festgelegt. Achten Sie darauf, die richtigen Werte anzugeben, damit nicht unbeabsichtigt Nachrichten gelöscht werden.

Hinweis

Der Bereinigungsvorgang (endgültiges Löschen) kann zu einer erhöhten CPU-Auslastung führen, da er mehrere API-Aufrufe umfasst. Gesperrte Nachrichten können während der Bereinigung nicht entfernt werden und verbleiben in der Entität.

Nächste Schritte

Sehen Sie sich die Beispiele in der Programmiersprache Ihrer Wahl an, um die Azure Service Bus-Features zu erkunden:

Beispiele für die älteren .NET- und Java-Clientbibliotheken:

Am 30. September 2026 werden die Azure Service Bus SDK-Bibliotheken „WindowsAzure.ServiceBus“, „Microsoft.Azure.ServiceBus“ und „com.microsoft.azure.servicebus“ eingestellt, da sie nicht den Azure SDK-Richtlinien entsprechen. Außerdem wird die Unterstützung des SBMP-Protokolls beendet, sodass Sie dieses Protokoll nach dem 30. September 2026 nicht mehr verwenden können. Migrieren Sie vor diesem Datum zu den neuesten Azure SDK-Bibliotheken, die wichtige Sicherheitsupdates und verbesserte Funktionen bieten.

Obwohl die älteren Bibliotheken noch über den 30. September 2026 hinaus verwendet werden können, erhalten sie keinen offiziellen Support und keine Updates mehr von Microsoft. Weitere Informationen finden Sie in der Ankündigung der Supporteinstellung.