Sdílet prostřednictvím


Dávkové odstraňování zpráv ve službě Azure Service Bus (Preview)

Azure Service Bus je plně spravovaný zprostředkovatel zpráv podnikové integrace, který umožňuje odesílat a přijímat zprávy mezi oddělenými aplikacemi a službami. Někdy ale můžete chtít odstranit zprávy z fronty nebo odběru bez jejich zpracování, například pokud jejich platnost vypršela, poškozená nebo irelevantní. V tomto článku se dozvíte, jak odstranit zprávy v dávkách ve službě Azure Service Bus.

Scénáře pro dávkové odstraňování zpráv

Ve službě Azure Service Bus můžete chtít použít funkci dávkového odstranění zpráv. Může jít o tyto příčiny:

  • Zprávy s vypršenou platností: Odstraňte zprávy, které překračují hodnotu TTL (Time to Live) a jsou ve frontě nedoručených zpráv.
  • Neúspěšné ověření nebo zpracování: Odeberte zprávy, které selhaly ověření nebo zpracování logiky a jsou ve frontě nedoručených zpráv.
  • Irelevantní zprávy: Odstraňte zprávy, které už nejsou relevantní pro logiku vaší aplikace z aktivní fronty.
  • Zpracování duplicit nebo nesprávného obsahu: Odeberte duplicitní nebo nesprávné zprávy z aktivní fronty.

Pomocí funkce dávkového odstranění zpráv můžete odstranit více zpráv z fronty nebo odběru v jedné operaci, místo abyste je odstranili 1 po druhém. Vzhledem k tomu, že odstranění probíhá na straně služby, nemusíte před odstraněním zpráv přijímat zprávy. Tato metoda minimalizuje počet požadavků služby i latenci sítě.

Důležité

Odstranění služby Batch se v současné době nepodporuje u dělených entit. V dávkovém volání odstranění můžete odstranit maximálně 4 000 zpráv. Dávkové odstranění se provádí na základě nejlepšího úsilí a nezaručuje, že se přesná hodnota messageCount odstraní v rámci jednoho volání rozhraní API.

Postup dávkového odstranění zpráv ve službě Service Bus

Zprávy můžete odstranit voláním DeleteMessagesAsync u objektu příjemce služby Service Bus. Na straně serveru vyžaduje DeleteMessagesAsync dva parametry: messageCount a beforeEnqueueTime.

  • messageCount: Požadovaný počet zpráv, které chcete odstranit. Služba může odstranit méně zpráv, než je tento limit.
  • beforeEnqueueTime: Volitelný DateTimeOffset v UTC představující čas pro odstranění. Odstraní se jenom zprávy, které byly před tímto časem ve frontě.

Kromě toho můžete volat PurgeMessagesAsync k vyprázdnění všech zpráv z entity.

Pomocí webu Azure Portal

Zprávy z entity můžete také vyprázdnit pomocí Průzkumníka služby Service Bus, který je k dispozici na webu Azure Portal. Zprávy můžete vyprázdnit pomocí následujících kroků:

  1. V entitě, ze které chcete odstranit zprávy, přejděte do okna Service Bus Explorer.
  2. V rozevíracím seznamu Service Bus Exploreru zvolte Režim příjmu.

Snímek obrazovky s rozevíracím seznamem s vybraným režimem příjmu

  1. Klikněte na možnost vyprázdnění zpráv, jak je znázorněno na snímku.

Snímek obrazovky s vybraným vyprázdněním zpráv

  1. Zobrazí se další dialogové okno, zadejte "vyprázdnit", aby se spustila operace vyprázdnění zpráv.

Snímek obrazovky se zadáváním vyprázdnění pro potvrzení

Při použití sad Azure SDK k provedení těchto operací se parametr beforeEnqueueTime nastaví na aktuální čas UTC (DateTime.UtcNow()). Je důležité zajistit, abyste zadali správné hodnoty, abyste zabránili nechtěnému odstranění zprávy.

Poznámka:

Operace vyprázdnění může vést ke zvýšení využití procesoru, protože zahrnuje více volání rozhraní API. Během vyprázdnění nejsou uzamčené zprávy způsobilé k odebrání a zůstanou v entitě.

Další kroky

Pokud chcete prozkoumat funkce služby Azure Service Bus, vyzkoušejte ukázky v jazyce podle vašeho výběru: