Freigeben über


Vorabruf von Azure Service Bus-Nachrichten

Wenn Sie das Vorabruffeature für einen der offiziellen Service Bus-Clients aktivieren, erhält der Empfänger bis zur angegebenen Anzahl von Vorabrufen mehr Nachrichten als von der Anwendung ursprünglich gefordert. Sobald Nachrichten an die Anwendung zurückgegeben werden, ruft der Client weitere Nachrichten im Hintergrund ab, um den Vorabrufpuffer aufzufüllen.

Aktivieren des Vorabrufs

Legen Sie zum Aktivieren des Vorabruffeatures die Vorabrufanzahl des Warteschlangen- oder Abonnementclients auf eine Zahl größer als null fest. Durch Festlegen des Werts auf 0 (null) wird der Vorabruf deaktiviert.

Legen Sie die Eigenschaft „Anzahl der Vorabrufe“ für die Objekte ServiceBusReceiverOptions und ServiceBusProcessorOptions fest.

Hinweis

Das Java Script SDK unterstützt das Vorabruffeature nicht.

Solange Nachrichten im Vorabrufpuffer vorhanden sind, werden alle nachfolgenden Empfangsaufrufe sofort aus dem Puffer erfüllt. Der Puffer wird im Hintergrund aufgefüllt, wenn Speicherplatz verfügbar wird. Wenn keine zu übermittelnden Nachrichten vorhanden sind, leert der Empfangsvorgang den Puffer und wartet oder sperrt dann wie erwartet.

Warum ist Vorabruf nicht die Standardoption?

Vorabruf beschleunigt den Nachrichtenfluss, indem eine Nachricht zum lokalen Abruf bereitgehalten wird, bevor die Anwendung sie anfragt. Diese Durchsatzbeschleunigung ist das Ergebnis eines Kompromisses, die der Anwendungsautor explizit treffen muss:

Wenn Sie den Modus Empfangen und Löschen verwenden, sind jegliche Nachrichten, die in den Vorabrufpuffer abgerufen werden, nicht mehr in der Warteschlange verfügbar. Die Nachrichten verbleiben nur im Arbeitsspeicher-Vorabrufpuffer, bis sie in der Anwendung empfangen werden. Wenn die Anwendung vor dem Eingang der Nachrichten in der Anwendung beendet wird, gehen diese Nachrichten unwiederbringlich verloren.

Wenn Sie den Empfangsmodus Peek-Lock verwenden, gelangen Nachrichten, die in den Vorabrufpuffer abgerufen wurden, im gesperrten Zustand in den Puffer. Für sie wird das Zeitlimit für die Sperre aktiviert. Wenn der Vorabrufpuffer groß ist und die Verarbeitung so lange dauert, dass Sperren für Nachrichten ablaufen, während sie sich im Vorabrufpuffer befinden oder sogar während die Anwendung die Nachricht verarbeitet, kann es einige verwirrende Ereignisse geben, die von der Anwendung behandelt werden müssen. Die Anwendung kann eine Nachricht mit einer abgelaufenen oder in Kürze ablaufenden Sperre empfangen. Wenn dies der Fall ist, verarbeitet die Anwendung möglicherweise die Nachricht, stellt dann aber fest, dass sie die Nachricht aufgrund einer abgelaufenen Sperre nicht abschließen kann. Das Programm kann die LockedUntilUtc-Eigenschaft überprüfen (die der Taktverschiebung zwischen dem Broker und der Uhr des lokalen Computers unterliegt).

Wenn die Nachrichtensperre abgelaufen ist, muss die Anwendung die Nachricht ignorieren und sollte keinen API-Aufruf für die Nachricht ausführen. Wenn die Nachricht nicht abgelaufen ist, der Ablauf aber bevorsteht, kann die Sperre erneuert und um eine weitere Standardsperrdauer verlängert werden. Wenn die Sperre im Vorabrufpuffer automatisch abläuft, wird die Nachricht als abgebrochen behandelt und wieder für den Abruf aus der Warteschlange zur Verfügung gestellt. Dies kann dazu führen, dass die Nachricht in den Vorabrufpuffer abgerufen und am Ende platziert wird. Wenn der Vorabrufpuffer während des Nachrichtenablaufs in der Regel nicht abgearbeitet werden kann, werden Nachrichten zwar wiederholt vorabgerufen, aber nie effektiv in einen nutzbaren (gültig gesperrten) Zustand versetzt. Sie werden schließlich in die Warteschlange für unzustellbare Nachrichten verschoben, sobald die maximale Anzahl der Zustellungen überschritten ist.

Wenn eine Anwendung eine Nachricht explizit abbricht, ist die Nachricht möglicherweise wieder für den Abruf aus der Warteschlange verfügbar. Wenn der Vorabruf aktiviert ist, wird die Nachricht erneut in den Vorabrufpuffer abgerufen und an dessen Ende platziert. Da Nachrichten in der FIFO-Reihenfolge (First-In, First Out) aus dem Vorabrufpuffer geleert werden, empfängt die Anwendung Nachrichten möglicherweise in einer anderen Reihenfolge. Beispielsweise kann die Anwendung eine Nachricht mit der ID 2 und dann eine Nachricht mit der ID 1 (die zuvor abgebrochen wurde) aus dem Puffer empfangen.

Wenn Sie für die Nachrichtenverarbeitung ein hohes Maß an Zuverlässigkeit benötigen und die Verarbeitung viel Arbeit und Zeit in Anspruch nimmt, empfiehlt es sich, die Vorabruffunktion dosiert oder gar nicht zu verwenden. Wenn Sie hohe Durchsatzraten benötigen und die Nachrichtenverarbeitung im Allgemeinen günstig ist, bietet der Vorabruf erhebliche Durchsatzvorteile.

Die maximale Anzahl der Vorabrufvorgänge und die für die Warteschlange oder das Abonnement konfigurierte Sperrdauer müssen so abgestimmt werden, dass das Zeitlimit für die Sperre mindestens die kumulative erwartete Verarbeitungszeit der erwarteten Nachrichten für die maximale Größe des Vorabrufpuffers plus eine Nachricht überschreitet. Gleichzeitig sollte das Sperrentimeout nicht so lang sein, dass Nachrichten ihre maximale Lebensdauer überschreiten können, wenn sie versehentlich gelöscht werden und somit ihre Sperre ablaufen muss, bevor sie erneut zugestellt werden.

Nächste Schritte

Sehen Sie sich die Beispiele in der Sprache Ihrer Wahl an, um Azure Service Bus-Features zu untersuchen.

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.