Dela via


Batchradering av meddelanden i Azure Service Bus (Förhandsgranskning)

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 batchborttagning av meddelanden 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 bearbetningslogik och som finns i dead-letter-kön.
  • Irrelevanta meddelanden: Ta bort meddelanden som inte längre är relevanta för din programlogik från den aktiva kö.
  • 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 möjliga sätt och garanterar inte att det exakta meddelandeantalet tas bort i en enda API-begäran.

Så här batchar du borttagningsmeddelanden i Service Bus

Du kan ta bort meddelanden genom att anropa DeleteMessagesAsync på Service Bus Mottagarobjekt. 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äns för radering. 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.

Använda Azure portalen

Du kan också rensa meddelanden från entitet med hjälp av Service Bus explorer som är tillgängligt på Azure portalen. Du kan följa följande steg för att rensa meddelanden:

  1. Gå till bladet "Service Bus explorer" på den entitet som du vill ta bort meddelanden från.
  2. Välj "Mottagningsläge" i listrutan Service Bus explorer.

Skärmbild av listrutan med mottagningsläget valt.

  1. Klicka på alternativet rensa meddelanden som visas i ögonblicksbilden.

Skärmbild av Rensa meddelanden som valts.

  1. En annan dialogruta visas, ange "rensa" för att köra åtgärden rensa meddelanden.

Skärmbild av att ange Radera för att bekräfta.

När du använder Azure SDKs för att utföra dessa åtgärder används parametern beforeEnqueueTime som standard till aktuell UTC-tid (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.

Quotas

För att säkerställa förutsägbara prestanda mellan nivåer erbjuder Azure Service Bus nivåbaserade gränser för det maximala antalet meddelanden som kan tas bort i en enda begäran om borttagning av batch:

Tier Maximal batchstorlek för varje förfrågan
Norm 500 meddelanden
Premie 4 000 meddelanden

Dessa gränser gäller för alla batchborttagningsåtgärder som initieras via SDK:er, REST-API:er och Service Bus Explorer.

Nästa steg

Om du vill utforska Azure Service Bus funktioner kan du prova exemplen på valfritt språk: