Usuwanie komunikatów w partiach w Azure Service Bus (wersja zapoznawcza)

Azure Service Bus to w pełni zarządzany broker komunikatów integracji przedsiębiorstwa, który umożliwia wysyłanie i odbieranie komunikatów między oddzielonymi aplikacjami i usługami. Jednak czasami możesz chcieć usunąć komunikaty z kolejki lub subskrypcji bez ich przetwarzania, na przykład jeśli wygasły, uszkodzone lub nieistotne. W tym artykule pokazano, jak usuwać komunikaty w partiach w Azure Service Bus.

Scenariusze usuwania komunikatów w usłudze Batch

Istnieje kilka scenariuszy, w których można użyć funkcji usuwania komunikatów w partiach w Azure Service Bus. Niektóre z nich to:

  • Wygasłe komunikaty: usuń komunikaty, które przekraczają czas wygaśnięcia (TTL) i znajdują się w kolejce wiadomości nie dostarczonych.
  • Niepowodzenie walidacji lub przetwarzania: Usuń wiadomości, które zakończyły się niepowodzeniem walidacji lub logiki przetwarzania i znajdują się w kolejce martwych listów.
  • Nieistotne komunikaty: usuń komunikaty, które nie są już istotne dla logiki aplikacji z aktywnej kolejki.
  • Obsługa duplikatów lub nieprawidłowej zawartości: usunięcie zduplikowanych lub nieprawidłowych komunikatów z aktywnej kolejki.

Korzystając z funkcji wsadowego usuwania komunikatów, można usunąć wiele komunikatów z kolejki lub subskrypcji za pomocą jednej operacji, zamiast usuwać je pojedynczo. Ponieważ usunięcie odbywa się po stronie usługi, nie trzeba odbierać komunikatów przed ich usunięciem. Ta metoda minimalizuje zarówno liczbę żądań obsługi, jak i opóźnienie sieci.

Ważne

Obecnie usuwanie usługi Batch nie jest obsługiwane w przypadku jednostek partycjonowanych. W wywołaniu usuwania wsadowego można usunąć maksymalnie 4000 komunikatów. Usuwanie wsadowe jest wykonywane na podstawie najlepszego nakładu pracy i nie gwarantuje, że dokładna wartość messageCount zostanie usunięta w jednym wywołaniu interfejsu API.

Jak usunąć wsadowo komunikaty w Service Bus

Komunikaty można usunąć, wywołując DeleteMessagesAsync w obiekcie Service Bus Receiver. Po stronie DeleteMessagesAsync serwera wymagane są dwa parametry: messageCount i beforeEnqueueTime.

  • messageCount: żądana liczba komunikatów do usunięcia. Usługa może usunąć mniej komunikatów niż ten limit.
  • beforeEnqueueTime: opcjonalna wartość DateTimeOffset w formacie UTC, która oznacza czas graniczny dla usunięcia. Tylko komunikaty, które zostały dodane do kolejki przed tym czasem, zostaną usunięte.

Ponadto możesz wywołać metodę PurgeMessagesAsync , aby przeczyścić wszystkie komunikaty z jednostki.

Korzystanie z portalu Azure

Możesz również usunąć wiadomości z jednostki przy użyciu Eksploratora Service Bus dostępnego w Azure Portal. Aby przeczyścić komunikaty, możesz wykonać następujące czynności:

  1. Przejdź do karty "Service Bus explorer" w jednostce, z której chcesz usunąć komunikaty.
  2. Wybierz pozycję *Tryb odbierania* w rozwijanym menu eksploratora Service Bus.

Zrzut ekranu przedstawiający listę rozwijaną z wybranym trybem Odbierania.

  1. Kliknij opcję usunięcia wiadomości, jak pokazano na migawce.

Zrzut ekranu przedstawiający zaznaczoną opcję Przeczyść komunikaty.

  1. Zostanie wyświetlone inne okno dialogowe, wprowadź "przeczyszczanie", aby wykonać operację przeczyszczania komunikatów.

Zrzut ekranu z wpisywaniem 'Purge' w celu potwierdzenia.

W przypadku używania Azure SDKs do wykonywania tych operacji parametr beforeEnqueueTime jest domyślnie ustawiony na bieżącą godzinę UTC (DateTime.UtcNow()). Ważne jest, aby zapewnić prawidłowe wartości, aby zapobiec niezamierzonemu usunięciu komunikatów.

Uwaga

Operacja przeczyszczania może prowadzić do zwiększenia użycia procesora CPU, ponieważ obejmuje wiele wywołań interfejsu API. Podczas przeczyszczania zablokowane komunikaty nie kwalifikują się do usunięcia i pozostaną w jednostce.

Quotas

Aby zapewnić przewidywalną wydajność w różnych warstwach, Azure Service Bus oferuje limity oparte na warstwach dla maksymalnej liczby komunikatów, które można usunąć w jednym żądaniu usuwania wsadowego:

Warstwa Maksymalny rozmiar partii na żądanie
Standard 500 komunikatów
Premium 4000 komunikatów

Limity te dotyczą wszystkich operacji usuwania wsadowego inicjowanych za pośrednictwem SDK, interfejsów API REST i Service Bus Explorer.

Następne kroki

Aby zapoznać się z funkcjami usługi Azure Service Bus, wypróbuj przykłady w wybranym języku: