Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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 Batches in Azure Service Bus löschen.
Szenarien für die Batchlöschung von Nachrichten
Es gibt mehrere Szenarien, in denen Sie das Feature zum Löschen von Batchnachrichten in Azure Service Bus verwenden möchten. 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.
Wie man Nachrichten im Service Bus stapelweise löscht
Sie können Nachrichten löschen, indem Sie DeleteMessagesAsync für Service Bus Receiver-Objekt 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.
Verwenden des Azure-Portals
Sie können Nachrichten auch aus einer Entität löschen, indem Sie Service Bus-Explorer verwenden, der im Azure-Portal verfügbar ist. Führen Sie die folgenden Schritte aus, um Nachrichten zu löschen:
- Navigieren Sie zum Blatt "Service Bus Explorer" in der Entität, aus der Sie Nachrichten löschen möchten.
- Wählen Sie im Dropdownmenü Service Bus Explorer "Empfangsmodus" aus.
- Wählen Sie die Option zum Löschen von Nachrichten aus, wie im Screenshot dargestellt.
- Ein weiteres Dialogfeld wird angezeigt. Geben Sie dort „Löschen“ ein, um den Vorgang zum Löschen der Nachrichten auszuführen.
Bei Verwendung von Azure SDKs zum Ausführen dieser Vorgänge wird der parameter beforeEnqueueTime 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.
Kontingente
Um eine vorhersehbare Leistung über Ebenen hinweg sicherzustellen, bietet Azure Service Bus ebenenbasierte Grenzwerte für die maximale Anzahl von Nachrichten, die in einer einzelnen Batchlöschanforderung gelöscht werden können:
| Tarif | Maximale Batchgröße pro Anforderung |
|---|---|
| Norm | 500 Nachrichten |
| Premium | 4.000 Nachrichten |
Diese Grenzwerte gelten für alle Batchlöschvorgänge, die über SDKs, REST-APIs und Service Bus Explorer initiiert werden.
Nächste Schritte
Um die Features von Azure Service Bus zu erkunden, probieren Sie die Beispiele in der von Ihnen gewählten Sprache aus:
- Azure Service Bus Clientbibliotheksbeispiele für .NET (neueste)
- Azure Service Bus Clientbibliotheksbeispiele für Java (neueste)
- Azure Service Bus Clientbibliotheksbeispiele für Python
- Azure Service Bus Clientbibliotheksbeispiele für JavaScript
- Azure Service Bus Clientbibliotheksbeispiele für TypeScript