Batchborttagningsmeddelanden i Azure Service Bus (förhandsversion)
Azure Service Bus är en fullständigt hanterad meddelandekö för företagsintegrering som gör att du kan skicka och ta emot meddelanden mellan frikopplade program och tjänster. Ibland kanske du dock vill ta bort meddelanden från en kö eller prenumeration utan att bearbeta dem, till exempel om de har upphört att gälla, är skadade eller irrelevanta. Den här artikeln visar hur du tar bort meddelanden i batchar i Azure Service Bus.
Scenarier för batchborttagning av meddelanden
Det finns flera scenarier där du kanske vill använda funktionen för batchborttagningsmeddelanden i Azure Service Bus. Några av dem är:
- Utgångna meddelanden: Ta bort meddelanden som överskrider TTL-värdet (time to live) och som finns i kön med obeställbara meddelanden.
- Misslyckad validering eller bearbetning: Ta bort meddelanden som misslyckades med validering eller bearbetning av logik och som finns i kön med obeställbara meddelanden.
- Irrelevanta meddelanden: Ta bort meddelanden som inte längre är relevanta för programlogik från den aktiva kön.
- Hantera dubbletter eller felaktigt innehåll: Ta bort duplicerade eller felaktiga meddelanden från den aktiva kön.
Genom att använda funktionen för att ta bort meddelanden i batch kan du ta bort flera meddelanden från en kö eller prenumeration i en åtgärd, i stället för att ta bort dem en i taget. Eftersom borttagningen görs på tjänstsidan behöver du inte ta emot meddelandena innan du tar bort dem. Den här metoden minimerar både antalet tjänstbegäranden och nätverksfördröjningen.
Viktigt!
För närvarande stöds inte Batch-borttagning med partitionerade entiteter. Du kan ta bort högst 4 000 meddelanden i ett batchborttagningsanrop. Batchborttagning görs på bästa sätt och garanterar inte att det exakta messageCount tas bort i ett enda API-anrop.
Så här batchar du borttagningsmeddelanden i Service Bus
Du kan ta bort meddelanden genom att anropa DeleteMessagesAsync på Service Bus Receiver-objektet. På serversidan DeleteMessagesAsync
krävs två parametrar: messageCount
och beforeEnqueueTime
.
messageCount
: Önskat antal meddelanden att ta bort. Tjänsten kan ta bort färre meddelanden än den här gränsen.beforeEnqueueTime
: En valfri DateTimeOffset i UTC, som representerar tidsgränsen för borttagning. Endast meddelanden som har sparats före den här tiden tas bort.
Dessutom kan du anropa PurgeMessagesAsync för att rensa alla meddelanden från entiteten.
Med Azure-portalen
Du kan också rensa meddelanden från entitet med hjälp av Service Bus Explorer som är tillgängligt på Azure Portal. Du kan följa följande steg för att rensa meddelanden:
- Gå till bladet Service Bus Explorer på den entitet som du vill ta bort meddelanden från.
- Välj "Mottagningsläge" i listrutan i Service Bus Explorer.
- Klicka på alternativet rensa meddelanden som visas i ögonblicksbilden.
- En annan dialogruta visas, ange "rensa" för att köra åtgärden rensa meddelanden.
När du använder Azure SDK:er för att utföra dessa åtgärder används parametern beforeEnqueueTime som standard till den aktuella UTC-tiden (DateTime.UtcNow()). Det är viktigt att du anger rätt värden för att förhindra oavsiktlig borttagning av meddelanden.
Kommentar
Rensningsåtgärden kan leda till ökad CPU-användning eftersom det omfattar flera API-anrop. Under rensningen är låsta meddelanden inte berättigade till borttagning och kommer att finnas kvar i entiteten.
Nästa steg
Om du vill utforska Azure Service Bus-funktioner kan du prova exemplen på valfritt språk:
- Azure Service Bus-klientbiblioteksexempel för .NET (senaste)
- Azure Service Bus-klientbiblioteksexempel för Java (senaste)
- Azure Service Bus-klientbiblioteksexempel för Python
- Azure Service Bus-klientbiblioteksexempel för JavaScript
- Azure Service Bus-klientbiblioteksexempel för TypeScript
Exempel för äldre .NET- och Java-klientbibliotek:
- Azure Service Bus-klientbiblioteksexempel för .NET (äldre) – Se Prefetch-exemplet .
- Azure Service Bus-klientbiblioteksexempel för Java (äldre) – Se Prefetch-exemplet .
Den 30 september 2026 drar vi tillbaka Azure Service Bus SDK-biblioteken WindowsAzure.ServiceBus, Microsoft.Azure.ServiceBus och com.microsoft.azure.servicebus, som inte följer Riktlinjerna för Azure SDK. Vi kommer också att avsluta stödet för SBMP-protokollet, så du kommer inte längre att kunna använda det här protokollet efter den 30 september 2026. Migrera till de senaste Azure SDK-biblioteken, som erbjuder kritiska säkerhetsuppdateringar och förbättrade funktioner, före det datumet.
Även om de äldre biblioteken fortfarande kan användas efter den 30 september 2026 får de inte längre officiell support och uppdateringar från Microsoft. Mer information finns i meddelandet om supportavgång.