Usuwanie komunikatów w usłudze Batch w usłudze 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 usłudze Azure Service Bus.
Scenariusze usuwania komunikatów w usłudze Batch
Istnieje kilka scenariuszy, w których można użyć funkcji usuwania wsadowego komunikatów w usłudze 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 utraconych komunikatów.
- Niepowodzenie walidacji lub przetwarzania: Usuń komunikaty, które zakończyły się niepowodzeniem weryfikacji lub logiki przetwarzania i znajdują się w kolejce utraconych komunikató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: usuń zduplikowane lub nieprawidłowe komunikaty z aktywnej kolejki.
Korzystając z funkcji usuwania komunikatów wsadowych, można usunąć wiele komunikatów z kolejki lub subskrypcji w 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 wsadować usuwanie komunikatów w usłudze Service Bus
Komunikaty można usunąć przez wywołanie metody DeleteMessagesAsync w obiekcie odbiornika usługi Service Bus. 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
: opcjonalny element DateTimeOffset w formacie UTC reprezentujący czas odcięcia do usunięcia. Tylko komunikaty, które zostały w kolejce przed tym czasem, zostaną usunięte.
Ponadto możesz wywołać metodę PurgeMessagesAsync , aby przeczyścić wszystkie komunikaty z jednostki.
Przy użyciu witryny Azure Portal
Możesz również przeczyścić komunikaty z jednostki przy użyciu eksploratora usługi Service Bus dostępnego w witrynie Azure Portal. Aby przeczyścić komunikaty, możesz wykonać następujące czynności:
- Przejdź do bloku "Eksplorator usługi Service Bus" w jednostce, z której chcesz usunąć komunikaty.
- Wybierz pozycję "Tryb odbierania" na liście rozwijanej Eksplorator usługi Service Bus.
- Kliknij opcję przeczyszczania komunikatów, jak pokazano w migawki.
- Zostanie wyświetlone inne okno dialogowe, wprowadź "przeczyszczanie", aby wykonać operację przeczyszczania komunikatów.
W przypadku korzystania z zestawów SDK platformy Azure 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.
Następne kroki
Aby zapoznać się z funkcjami usługi Azure Service Bus, wypróbuj wybrane przykłady w wybranym języku:
- Przykłady biblioteki klienta usługi Azure Service Bus dla platformy .NET (najnowsza wersja)
- Przykłady biblioteki klienta usługi Azure Service Bus dla języka Java (najnowsza wersja)
- Przykłady biblioteki klienta usługi Azure Service Bus dla języka Python
- Przykłady biblioteki klienta usługi Azure Service Bus dla języka JavaScript
- Przykłady biblioteki klienta usługi Azure Service Bus dla języka TypeScript