Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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:
- Przejdź do karty "Service Bus explorer" w jednostce, z której chcesz usunąć komunikaty.
- Wybierz pozycję *Tryb odbierania* w rozwijanym menu eksploratora Service Bus.
- Kliknij opcję usunięcia wiadomości, jak pokazano na migawce.
- Zostanie wyświetlone inne okno dialogowe, wprowadź "przeczyszczanie", aby wykonać operację przeczyszczania komunikatów.
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:
- przykłady biblioteki klienta Azure Service Bus dla .NET (najnowsza)
- przykłady biblioteki klienta Azure Service Bus dla Java (najnowsza)
- przykłady korzystania z biblioteki klienta Azure Service Bus w języku Python
- przykłady biblioteki klienta Azure Service Bus dla języka JavaScript
- przykłady biblioteki klienta Azure Service Bus dla języka TypeScript