Berichten uitstellen
Wanneer een wachtrij- of abonnementsclient een bericht ontvangt dat het wil verwerken, maar de verwerking momenteel niet mogelijk is vanwege speciale omstandigheden, heeft deze de mogelijkheid om het bericht op een later tijdstip uit te stellen. Het bericht blijft in de wachtrij of het abonnement staan, maar wordt nog niet verwerkt.
Notitie
Uitgestelde berichten worden niet verlopen en worden automatisch verplaatst naar een wachtrij met dode letters totdat een client-app deze probeert te ontvangen met behulp van een API en het volgnummer. Dit is zo ontworpen. Wanneer een client probeert een uitgesteld bericht op te halen, wordt het gecontroleerd op een verlopen voorwaarde en verplaatst naar een wachtrij met dode letters als het al is verlopen. Een verlopen bericht wordt alleen verplaatst naar een deadletter-subqueue wanneer de functie dead-letter is ingeschakeld voor de entiteit (wachtrij of abonnement).
Voorbeeldscenario's
Uitstel is een functie die speciaal is gemaakt voor werkstroomverwerkingsscenario's. Voor werkstroomframeworks moeten bepaalde bewerkingen mogelijk in een bepaalde volgorde worden verwerkt. Mogelijk moeten ze de verwerking van sommige ontvangen berichten uitstellen totdat de voorgeschreven voorafgaande werkzaamheden die door andere berichten zijn geïnformeerd, zijn voltooid.
Een eenvoudig illustratief voorbeeld is een orderverwerkingsreeks waarin een betalingsmelding van een externe betalingsprovider wordt weergegeven in een systeem voordat de overeenkomende inkooporder is doorgegeven vanuit het winkelfront naar het uitvoeringssysteem. In dat geval kan het uitvoeringssysteem de verwerking van de betalingsmelding uitstellen totdat er een bestelling is waaraan het moet worden gekoppeld. In rendez-vousscenario's, waarbij berichten van verschillende bronnen een werkstroom doorsturen, kan de realtime uitvoeringsvolgorde inderdaad correct zijn, maar de berichten die de resultaten weerspiegelen, kunnen buiten orde komen.
Uiteindelijk helpt uitstel bij het opnieuw ordenen van berichten uit de aankomstvolgorde in een volgorde waarin ze kunnen worden verwerkt, terwijl deze berichten veilig in het berichtenarchief blijven waarvoor de verwerking moet worden uitgesteld.
Als een bericht niet kan worden verwerkt omdat een bepaalde resource voor het afhandelen van dat bericht tijdelijk niet beschikbaar is, maar berichtverwerking niet mag worden opgeschort, kunt u dit bericht enkele minuten aan de zijkant plaatsen door het volgnummer in een gepland bericht binnen een paar minuten te onthouden en het uitgestelde bericht opnieuw op te halen wanneer het geplande bericht binnenkomt. Als een berichtenhandler afhankelijk is van een database voor alle bewerkingen en die database tijdelijk niet beschikbaar is, mag deze geen uitstel gebruiken, maar het ontvangen van berichten helemaal onderbreken totdat de database weer beschikbaar is.
Uitgestelde berichten ophalen
Uitgestelde berichten blijven in de hoofdwachtrij, samen met alle andere actieve berichten (in tegenstelling tot berichten in een subqueeque), maar ze kunnen niet meer worden ontvangen met behulp van de normale ontvangstbewerkingen. Uitgestelde berichten kunnen worden gedetecteerd via het bladeren of bekijken van berichten als een toepassing deze niet meer bijhoudt.
Als u een uitgesteld bericht wilt ophalen, is de eigenaar verantwoordelijk voor het onthouden van het volgnummer wanneer het wordt uitgesteld. Elke ontvanger die het volgnummer van een uitgesteld bericht kent, kan het bericht later ontvangen met behulp van ontvangstmethoden die het volgnummer als parameter gebruiken. Zie Berichtvolgorde en tijdstempels voor meer informatie over volgnummers.
Volgende stappen
Probeer de voorbeelden in de taal van uw keuze om Azure Service Bus-functies te verkennen.
- Voorbeelden van Azure Service Bus-clientbibliotheek voor .NET (nieuwste versie): zie het voorbeeld Settling Messages .
- Voorbeelden van Azure Service Bus-clientbibliotheek voor Java (nieuwste versie)
- Voorbeelden van Azure Service Bus-clientbibliotheek voor Python : zie het receive_deferred_message_queue.py-voorbeeld .
- Voorbeelden van Azure Service Bus-clientbibliotheek voor JavaScript : zie het geavanceerde/deferral.js voorbeeld.
- Voorbeelden van Azure Service Bus-clientbibliotheek voor TypeScript : zie het geavanceerde/deferral.ts voorbeeld.
Bekijk hier voorbeelden voor de oudere .NET- en Java-clientbibliotheken:
- Voorbeelden van Azure Service Bus-clientbibliotheek voor .NET (verouderd): zie het uitstelvoorbeeld .
- Voorbeelden van Azure Service Bus-clientbibliotheek voor Java (verouderd)
Op 30 september 2026 gaan we de Azure Service Bus SDK-bibliotheken WindowsAzure.ServiceBus, Microsoft.Azure.ServiceBus en com.microsoft.azure.servicebus buiten gebruik stellen, die niet voldoen aan de Azure SDK-richtlijnen. We beëindigen ook de ondersteuning van het SBMP-protocol, zodat u dit protocol na 30 september 2026 niet meer kunt gebruiken. Migreer naar de nieuwste Azure SDK-bibliotheken, die vóór die datum essentiële beveiligingsupdates en verbeterde mogelijkheden bieden.
Hoewel de oudere bibliotheken nog steeds meer dan 30 september 2026 kunnen worden gebruikt, ontvangen ze geen officiële ondersteuning en updates meer van Microsoft. Zie de aankondiging van de buitengebruikstelling van de ondersteuning voor meer informatie.