Udostępnij za pośrednictwem


Odraczanie komunikatów

Gdy klient kolejki lub subskrypcji otrzymuje komunikat, że jest gotów przetworzyć, ale przetwarzanie nie jest obecnie możliwe ze względu na szczególne okoliczności, ma możliwość "odroczenia" pobierania komunikatu do późniejszego punktu. Komunikat pozostaje w kolejce lub subskrypcji, ale jest odkładany.

Uwaga

Odroczone komunikaty nie wygasły i są automatycznie przenoszone do kolejki utraconych komunikatów, dopóki aplikacja kliencka nie podejmie próby odebrania ich przy użyciu interfejsu API i numeru sekwencji. Wynika to z ustawienia fabrycznego. Gdy klient próbuje pobrać komunikat odroczony, jest sprawdzany pod kątem wygasłego warunku i został przeniesiony do kolejki utraconych komunikatów, jeśli już wygasł. Wygasły komunikat jest przenoszony do podzapytania deadletter tylko wtedy, gdy funkcja utraconych komunikatów jest włączona dla jednostki (kolejka lub subskrypcja).

Przykładowe scenariusze

Odroczenie to funkcja utworzona specjalnie dla scenariuszy przetwarzania przepływu pracy. Struktury przepływu pracy mogą wymagać przetworzenia niektórych operacji w określonej kolejności. Może być konieczne odroczenie przetwarzania niektórych odebranych wiadomości, dopóki nie zostanie ukończona określona wcześniejsza praca poinformowana przez inne wiadomości.

Prostym przykładem ilustracyjnym jest sekwencja przetwarzania zamówień, w której w systemie pojawia się powiadomienie o płatności od zewnętrznego dostawcy płatności przed propagowaniem zgodnego zamówienia zakupu z frontu sklepu do systemu realizacji. W takim przypadku system realizacji może odroczyć przetwarzanie powiadomienia o płatności do momentu złożenia zamówienia, z którym ma zostać skojarzona. W scenariuszach spotkania, w których komunikaty z różnych źródeł kierują przepływ pracy do przodu, kolejność wykonywania w czasie rzeczywistym może być rzeczywiście poprawna, ale komunikaty odzwierciedlające wyniki mogą pojawić się poza kolejnością.

Ostatecznie, odroczenie pomocy w zmianie kolejności komunikatów z zamówienia przybycia do kolejności, w której można je przetworzyć, pozostawiając te wiadomości bezpiecznie w magazynie wiadomości, dla których przetwarzanie musi zostać odłożone.

Jeśli nie można przetworzyć komunikatu, ponieważ określony zasób do obsługi tego komunikatu jest tymczasowo niedostępny, ale przetwarzanie komunikatów nie powinno być podsumowywane, sposobem na umieszczenie tego komunikatu po stronie przez kilka minut jest zapamiętanie numeru sekwencji w zaplanowanym komunikacie , który ma zostać opublikowany w ciągu kilku minut, i ponowne pobranie odroczonego komunikatu po nadejściu zaplanowanego komunikatu. Jeśli program obsługi komunikatów zależy od bazy danych dla wszystkich operacji i ta baza danych jest tymczasowo niedostępna, nie powinna używać odroczenia, ale raczej wstrzymać odbieranie komunikatów do momentu ponownego udostępnienia bazy danych.

Pobieranie odroczonych komunikatów

Odroczone komunikaty pozostają w głównej kolejce wraz ze wszystkimi innymi aktywnymi komunikatami (w przeciwieństwie do komunikatów utraconych, które działają w podqueue), ale nie mogą być już odbierane przy użyciu zwykłych operacji odbierania. Komunikaty odroczone można odnaleźć za pośrednictwem przeglądania komunikatów lub przeglądania , jeśli aplikacja utraci ich śledzenie.

Aby pobrać komunikat odroczony, jego właściciel jest odpowiedzialny za zapamiętanie numeru sekwencji podczas jego odchyłania. Każdy odbiornik, który zna numer sekwencji komunikatu odroczonego, może później odbierać komunikat przy użyciu metod odbierania, które przyjmują numer sekwencji jako parametr. Aby uzyskać więcej informacji na temat numerów sekwencji, zobacz Sekwencjonowanie komunikatów i znaczniki czasu.

Następne kroki

Wypróbuj przykłady w wybranym języku, aby zapoznać się z funkcjami usługi Azure Service Bus.

Zobacz przykłady starszych bibliotek klienckich .NET i Java tutaj:

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.