Udostępnij za pośrednictwem


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.

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 dla starszych bibliotek klienckich .NET i Java:

30 września 2026 r. wycofamy biblioteki zestawu SDK usługi Azure Service Bus WindowsAzure.ServiceBus, Microsoft.Azure.ServiceBus i com.microsoft.azure.servicebus, które nie są zgodne z wytycznymi dotyczącymi zestawu Azure SDK. Zakończymy również obsługę protokołu SBMP, więc nie będzie można już używać tego protokołu po 30 września 2026 r. Przeprowadź migrację do najnowszych bibliotek zestawu Azure SDK, które oferują krytyczne aktualizacje zabezpieczeń i ulepszone możliwości przed tą datą.

Mimo że starsze biblioteki mogą być nadal używane poza 30 września 2026 r., nie będą już otrzymywać oficjalnej pomocy technicznej i aktualizacji od firmy Microsoft. Aby uzyskać więcej informacji, zobacz ogłoszenie o wycofaniu pomocy technicznej.