ServiceBusReceiver Třída
ServiceBusReceiver Třída definuje rozhraní vysoké úrovně pro příjem zpráv z odběru Azure Service Bus fronty nebo tématu.
Dva primární kanály pro příjem zpráv jsou receive() pro vytvoření jediného požadavku na zprávy a asynchronní pro zprávy v příjemci: průběžné přijímání příchozích zpráv průběžným způsobem.
K vytvoření instance ServiceBusReceiver použijte get_<queue/subscription>_receiver
metodu ~azure.servicebus.aio.ServiceBusClient.
- Dědičnost
-
ServiceBusReceiverazure.servicebus.aio._base_handler_async.BaseHandlerServiceBusReceiverazure.servicebus._common.receiver_mixins.ReceiverMixinServiceBusReceiver
Konstruktor
ServiceBusReceiver(fully_qualified_namespace: str, credential: AsyncTokenCredential | AzureSasCredential | AzureNamedKeyCredential, *, queue_name: str | None = None, topic_name: str | None = None, subscription_name: str | None = None, receive_mode: ServiceBusReceiveMode | str = ServiceBusReceiveMode.PEEK_LOCK, max_wait_time: float | None = None, auto_lock_renewer: AutoLockRenewer | None = None, prefetch_count: int = 0, **kwargs: Any)
Parametry
- fully_qualified_namespace
- str
Plně kvalifikovaný název hostitele pro obor názvů služby Service Bus. Formát oboru názvů: .servicebus.windows.net.
- credential
- AsyncTokenCredential nebo AzureSasCredential nebo AzureNamedKeyCredential
Objekt přihlašovacích údajů používaný k ověřování, který implementuje konkrétní rozhraní pro získávání tokenů. Přijímá objekty přihlašovacích údajů vygenerované knihovnou azure-identity a objekty, které implementují metodu *get_token (self, scopes) nebo alternativně azureSasCredential.
- queue_name
- str
Cesta konkrétní fronty služby Service Bus, ke které se klient připojuje.
- topic_name
- str
Cesta ke konkrétnímu tématu služby Service Bus obsahující předplatné, ke kterému se klient připojuje.
- subscription_name
- str
Cesta ke konkrétnímu předplatnému služby Service Bus v zadaném tématu, ke které se klient připojuje.
- receive_mode
- Union[ServiceBusReceiveMode, str]
Režim, pomocí kterého se načtou zprávy z entity. Dvě možnosti jsou PEEK_LOCK a RECEIVE_AND_DELETE. Zprávy přijaté s PEEK_LOCK musí být vyřešeny v daném období uzamčení, než budou odebrány z fronty. Zprávy přijaté s RECEIVE_AND_DELETE budou okamžitě odebrány z fronty, a pokud se klientovi nepodaří zprávu zpracovat, nelze je následně opustit ani znovu přijímat. Výchozí režim je PEEK_LOCK.
Časový limit v sekundách mezi přijatými zprávami, po jehož uplynutí příjemce automaticky přestane přijímat. Výchozí hodnota je None(Žádný), což znamená žádný časový limit.
- logging_enable
- bool
Určuje, zda se mají protokoly trasování sítě vypisovat do protokolovacího nástroje. Výchozí hodnota je False.
- transport_type
- TransportType
Typ přenosového protokolu, který se použije ke komunikaci se službou Service Bus. Výchozí hodnota je TransportType.Amqp.
- http_proxy
- Dict
Nastavení proxy serveru HTTP. Musí se jednat o slovník s následujícími klíči: "proxy_hostname" (hodnota str) a "proxy_port" (hodnota int). Kromě toho mohou být k dispozici také následující klíče: 'username', 'password'.
- user_agent
- str
Pokud je zadaný, přidá se před předdefinovaný řetězec uživatelského agenta.
- auto_lock_renewer
- Optional[AutoLockRenewer]
Můžete zadat ~azure.servicebus.aio.AutoLockRenewer tak, aby se zprávy automaticky registrovaly při příjmu. Pokud je příjemcem relace, použije se místo toho na relaci.
- prefetch_count
- int
Maximální počet zpráv, které se mají při každém požadavku na službu uložit do mezipaměti. Toto nastavení je určené jenom pro pokročilé ladění výkonu. Zvýšení této hodnoty zvýší výkon propustnosti zpráv, ale zvýší šanci, že zprávy vyprší, když se uloží do mezipaměti, pokud se nezpracují dostatečně rychle. Výchozí hodnota je 0, což znamená, že zprávy budou ze služby přijímány a zpracovávány po jednom. V případě prefetch_count 0 se ServiceBusReceiver.receive pokusí uložit do mezipaměti max_message_count (pokud je k dispozici) v rámci svého požadavku na službu.
- client_identifier
- str
Identifikátor založený na řetězci pro jednoznačnou identifikaci instance klienta. Service Bus ji přidruží k některým chybovým zpráv, aby se usnadnila korelace chyb. Pokud nezadáte, vygeneruje se jedinečné ID.
- socket_timeout
- float
Čas v sekundách, kdy by měl podkladový soket na připojení čekat při odesílání a přijímání dat před vypršením časového limitu. Výchozí hodnota je 0,2 pro TransportType.Amqp a 1 pro TransportType.AmqpOverWebsocket. Pokud k chybám připojení dochází kvůli vypršení časového limitu zápisu, může být potřeba předat vyšší než výchozí hodnotu.
Proměnné
- fully_qualified_namespace
- str
Plně kvalifikovaný název hostitele pro obor názvů služby Service Bus. Formát oboru názvů: .servicebus.windows.net.
- entity_path
- str
Cesta k entitě, ke které se klient připojuje.
Metody
abandon_message |
Opusťte zprávu. Tato zpráva se vrátí do fronty a zpřístupní se k opětovnému přijetí. |
close | |
complete_message |
Dokončete zprávu. Tím se zpráva odebere z fronty. |
dead_letter_message |
Přesuňte zprávu do fronty nedoručených zpráv. Fronta nedoručených zpráv je dílčí fronta, kterou lze použít k ukládání zpráv, které se nepodařilo správně zpracovat nebo které jinak vyžadují další kontrolu nebo zpracování. Frontu lze také nakonfigurovat tak, aby odesílala zprávy s vypršenou platností do fronty nedoručených zpráv. |
defer_message |
Odmaví zprávu. Tato zpráva zůstane ve frontě, ale aby mohla být přijata, musí být požadována konkrétně podle jejího pořadového čísla. |
peek_messages |
Umožňuje procházet zprávy, které ve frontě čekají na vyřízení. Zprávy s náhledem se neodeberou z fronty ani nejsou uzamčené. Nelze je dokončit, odložit ani nedoručovat. |
receive_deferred_messages |
Příjem zpráv, které byly dříve odloženy. Při přijímání odložených zpráv z dělené entity musí být všechna zadaná pořadová čísla zpráv ze stejného oddílu. |
receive_messages |
Příjem dávky zpráv najednou Tento přístup je optimální, pokud chcete zpracovat více zpráv současně nebo provést ad hoc příjem v rámci jednoho volání. Všimněte si, že počet zpráv načtených v jedné dávce bude záviset na tom, jestli byla pro příjemce nastavena prefetch_count . Pokud pro příjemce není nastavená prefetch_count , příjemce se pokusí uložit do mezipaměti max_message_count zprávy (pokud jsou k dispozici) v rámci požadavku na službu. Toto volání bude upřednostňovat rychlé vrácení před schůzkou se zadanou velikostí dávky, a proto se vrátí, jakmile obdržíte aspoň jednu zprávu a v příchozích zprávách bude mezera bez ohledu na zadanou velikost dávky. |
renew_message_lock |
Obnovte zámek zpráv. Tím se zachová zámek zprávy, aby se zajistilo, že se nevrátí do fronty k opětovnému zpracování. Aby bylo možné zprávu dokončit (nebo jinak vyřešit), musí být zámek zachován a jeho platnost již vypršela; zámek, jehož platnost vypršela, nelze obnovit. Zprávy přijaté prostřednictvím režimu RECEIVE_AND_DELETE nejsou uzamčeny, a proto je nelze obnovit. Tato operace je k dispozici pouze pro zprávy, které nejsou určené relacemi. |
abandon_message
Opusťte zprávu.
Tato zpráva se vrátí do fronty a zpřístupní se k opětovnému přijetí.
async abandon_message(message: ServiceBusReceivedMessage) -> None
Parametry
Návratový typ
Výjimky
Příklady
Opuštění přijaté zprávy
messages = await servicebus_receiver.receive_messages(max_wait_time=5)
for message in messages:
await servicebus_receiver.abandon_message(message)
close
async close() -> None
Výjimky
complete_message
Dokončete zprávu.
Tím se zpráva odebere z fronty.
async complete_message(message: ServiceBusReceivedMessage) -> None
Parametry
Návratový typ
Výjimky
Příklady
Dokončete přijatou zprávu.
messages = await servicebus_receiver.receive_messages(max_wait_time=5)
for message in messages:
await servicebus_receiver.complete_message(message)
dead_letter_message
Přesuňte zprávu do fronty nedoručených zpráv.
Fronta nedoručených zpráv je dílčí fronta, kterou lze použít k ukládání zpráv, které se nepodařilo správně zpracovat nebo které jinak vyžadují další kontrolu nebo zpracování. Frontu lze také nakonfigurovat tak, aby odesílala zprávy s vypršenou platností do fronty nedoručených zpráv.
async dead_letter_message(message: ServiceBusReceivedMessage, reason: str | None = None, error_description: str | None = None) -> None
Parametry
Návratový typ
Výjimky
Příklady
Nedoručených zpráv přijatých zpráv
messages = await servicebus_receiver.receive_messages(max_wait_time=5)
for message in messages:
await servicebus_receiver.dead_letter_message(message)
defer_message
Odmaví zprávu.
Tato zpráva zůstane ve frontě, ale aby mohla být přijata, musí být požadována konkrétně podle jejího pořadového čísla.
async defer_message(message: ServiceBusReceivedMessage) -> None
Parametry
Návratový typ
Výjimky
Příklady
Odložení přijaté zprávy
messages = await servicebus_receiver.receive_messages(max_wait_time=5)
for message in messages:
await servicebus_receiver.defer_message(message)
peek_messages
Umožňuje procházet zprávy, které ve frontě čekají na vyřízení.
Zprávy s náhledem se neodeberou z fronty ani nejsou uzamčené. Nelze je dokončit, odložit ani nedoručovat.
async peek_messages(max_message_count: int = 1, *, sequence_number: int = 0, timeout: float | None = None, **kwargs: Any) -> List[ServiceBusReceivedMessage]
Parametry
- max_message_count
- int
Maximální počet zpráv, které se mají vyzkoušet a zobrazit. Výchozí hodnota je 1.
- sequence_number
- int
Pořadové číslo zprávy, ze kterého chcete začít procházet zprávy.
Celkový časový limit operace v sekundách včetně všech opakovaných pokusů. Hodnota musí být větší než 0, pokud je zadána. Výchozí hodnota je None(Žádný), což znamená žádný časový limit.
Návraty
Seznam objektů ~azure.servicebus.ServiceBusReceivedMessage.
Návratový typ
Výjimky
Příklady
Náhled zpráv ve frontě
async with servicebus_receiver:
messages = await servicebus_receiver.peek_messages()
for message in messages:
print(str(message))
receive_deferred_messages
Příjem zpráv, které byly dříve odloženy.
Při přijímání odložených zpráv z dělené entity musí být všechna zadaná pořadová čísla zpráv ze stejného oddílu.
async receive_deferred_messages(sequence_numbers: int | List[int], *, timeout: float | None = None, **kwargs: Any) -> List[ServiceBusReceivedMessage]
Parametry
Seznam pořadových čísel zpráv, které byly odloženy.
Celkový časový limit operace v sekundách včetně všech opakovaných pokusů. Hodnota musí být větší než 0, pokud je zadána. Výchozí hodnota je None(Žádný), což znamená žádný časový limit.
Návraty
Seznam přijatých zpráv.
Návratový typ
Výjimky
Příklady
Příjem odložených zpráv ze služby ServiceBus
async with servicebus_receiver:
deferred_sequenced_numbers = []
messages = await servicebus_receiver.receive_messages(max_wait_time=5)
for message in messages:
deferred_sequenced_numbers.append(message.sequence_number)
print(str(message))
await servicebus_receiver.defer_message(message)
received_deferred_msg = await servicebus_receiver.receive_deferred_messages(
sequence_numbers=deferred_sequenced_numbers
)
for message in received_deferred_msg:
await servicebus_receiver.complete_message(message)
receive_messages
Příjem dávky zpráv najednou
Tento přístup je optimální, pokud chcete zpracovat více zpráv současně nebo provést ad hoc příjem v rámci jednoho volání.
Všimněte si, že počet zpráv načtených v jedné dávce bude záviset na tom, jestli byla pro příjemce nastavena prefetch_count . Pokud pro příjemce není nastavená prefetch_count , příjemce se pokusí uložit do mezipaměti max_message_count zprávy (pokud jsou k dispozici) v rámci požadavku na službu.
Toto volání bude upřednostňovat rychlé vrácení před schůzkou se zadanou velikostí dávky, a proto se vrátí, jakmile obdržíte aspoň jednu zprávu a v příchozích zprávách bude mezera bez ohledu na zadanou velikost dávky.
async receive_messages(max_message_count: int | None = 1, max_wait_time: float | None = None) -> List[ServiceBusReceivedMessage]
Parametry
Maximální počet zpráv v dávce Skutečné vrácené číslo bude záviset na velikosti prefetch_count a rychlosti příchozího datového proudu. Nastavení na Žádné bude plně záviset na konfiguraci předběžného načtení. Výchozí hodnota je 1.
Maximální doba čekání v sekundách, než dorazí první zpráva. Pokud nedorazí žádné zprávy a není zadán žádný časový limit, toto volání se nevrátí, dokud nebude připojení ukončeno. Pokud je zadaný a během časového limitu nedorazí žádné zprávy, vrátí se prázdný seznam.
Návraty
Seznam přijatých zpráv. Pokud nejsou k dispozici žádné zprávy, bude se jednat o prázdný seznam.
Návratový typ
Výjimky
Příklady
Příjem zpráv ze služby ServiceBus
async with servicebus_receiver:
messages = await servicebus_receiver.receive_messages(max_wait_time=5)
for message in messages:
print(str(message))
await servicebus_receiver.complete_message(message)
renew_message_lock
Obnovte zámek zpráv.
Tím se zachová zámek zprávy, aby se zajistilo, že se nevrátí do fronty k opětovnému zpracování.
Aby bylo možné zprávu dokončit (nebo jinak vyřešit), musí být zámek zachován a jeho platnost již vypršela; zámek, jehož platnost vypršela, nelze obnovit.
Zprávy přijaté prostřednictvím režimu RECEIVE_AND_DELETE nejsou uzamčeny, a proto je nelze obnovit. Tato operace je k dispozici pouze pro zprávy, které nejsou určené relacemi.
async renew_message_lock(message: ServiceBusReceivedMessage, *, timeout: float | None = None, **kwargs: Any) -> datetime
Parametry
Celkový časový limit operace v sekundách včetně všech opakovaných pokusů. Hodnota musí být větší než 0, pokud je zadána. Výchozí hodnota je None(Žádný), což znamená žádný časový limit.
Návraty
Datum a čas UTC, na které má zámek vypršet.
Návratový typ
Výjimky
Příklady
Obnovte zámek u přijaté zprávy.
messages = await servicebus_receiver.receive_messages(max_wait_time=5)
for message in messages:
await servicebus_receiver.renew_message_lock(message)
Atributy
client_identifier
session
Získejte objekt ServiceBusSession propojený s příjemcem. Relace je k dispozici pouze pro entity s povolenými relacemi. Pokud by byla volána na přijímači bez relací, vrátila by hodnotu None.
Návratový typ
Příklady
Získání relace od příjemce
async with servicebus_client.get_queue_receiver(queue_name=queue_name, session_id=session_id) as receiver:
session = receiver.session