ServiceBusReceiver Osztály
A ServiceBusReceiver osztály egy magas szintű felületet határoz meg a Azure Service Bus üzenetsor- vagy témakör-előfizetésből érkező üzenetek fogadásához.
Az üzenetek fogadásának két elsődleges csatornája a fogadás(ok) egyetlen kérés kérése az üzenetekre és a fogadóban lévő üzenetekre: a bejövő üzenetek folyamatos fogadása folyamatos módon.
ServiceBusReceiver-példány létrehozásához használja az get_<queue/subscription>_receiver
~azure.servicebus.ServiceBusClient metódust.
- Öröklődés
-
azure.servicebus._base_handler.BaseHandlerServiceBusReceiverazure.servicebus._common.receiver_mixins.ReceiverMixinServiceBusReceiver
Konstruktor
ServiceBusReceiver(fully_qualified_namespace: str, credential: TokenCredential | 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)
Paraméterek
- fully_qualified_namespace
- str
A Service Bus-névtér teljes gazdagépneve. A névtér formátuma: .servicebus.windows.net.
- credential
- TokenCredential vagy AzureSasCredential vagy AzureNamedKeyCredential
A hitelesítéshez használt hitelesítőadat-objektum, amely egy adott felületet implementál a jogkivonatok lekéréséhez. Elfogadja az azure-identity kódtár által létrehozott hitelesítőadat-objektumokat, valamint azokat az objektumokat, amelyek a *get_token(saját, hatókörök) metódust implementálják, vagy másik lehetőségként egy AzureSasCredential is megadható.
- queue_name
- str
Annak a Service Bus-üzenetsornak az elérési útja, amelyhez az ügyfél csatlakozik.
- topic_name
- str
Egy adott Service Bus-témakör elérési útja, amely tartalmazza azt az előfizetést, amelyhez az ügyfél csatlakozik.
- subscription_name
- str
Az adott Service Bus-előfizetés elérési útja a megadott témakör alatt, amelyhez az ügyfél csatlakozik.
A fogadott üzenetek közötti időtúllépés másodpercben, amely után a fogadó automatikusan leáll. Az alapértelmezett érték Nincs, ami azt jelenti, hogy nincs időtúllépés.
- receive_mode
- Union[ServiceBusReceiveMode, str]
Az a mód, amellyel az üzenetek le lesznek kérve az entitásból. A két lehetőség a PEEK_LOCK és a RECEIVE_AND_DELETE. A PEEK_LOCK fogadott üzeneteket egy adott zárolási időszakon belül kell rendezni, mielőtt eltávolítanák őket az üzenetsorból. A RECEIVE_AND_DELETE fogadott üzenetek azonnal törlődnek az üzenetsorból, és nem hagyhatók el vagy nem fogadhatók újra, ha az ügyfél nem tudja feldolgozni az üzenetet. Az alapértelmezett mód a PEEK_LOCK.
- logging_enable
- bool
Hálózati nyomkövetési naplók kimenete a naplózónak. Az alapértelmezett érték Hamis.
- transport_type
- TransportType
A Service Bus szolgáltatással való kommunikációhoz használt átviteli protokoll típusa. Az alapértelmezett érték a TransportType.Amqp.
- http_proxy
- Dict
HTTP-proxybeállítások. Ennek a szótárnak a következő kulcsokkal kell rendelkeznie: "proxy_hostname" (str érték) és "proxy_port" (int érték). Emellett a következő kulcsok is lehetnek jelen: "felhasználónév", "jelszó".
- user_agent
- str
Ha meg van adva, ez a beépített felhasználói ügynök sztringje előtt lesz hozzáadva.
- auto_lock_renewer
- Optional[AutoLockRenewer]
A ~azure.servicebus.AutoLockRenewer szolgáltatással az üzenetek automatikusan regisztrálva lesznek a visszaigazoláskor. Ha a fogadó munkamenet-fogadó, akkor az a munkamenetre lesz alkalmazva.
- prefetch_count
- int
A szolgáltatásnak küldött kérésekkel gyorsítótárazandó üzenetek maximális száma. Ez a beállítás csak speciális teljesítményhangoláshoz használható. Ennek az értéknek a növelése javítja az üzenetek átviteli sebességét, de növeli annak esélyét, hogy az üzenetek a gyorsítótárazásuk során lejárnak, ha nem dolgozzák fel őket elég gyorsan. Az alapértelmezett érték 0, ami azt jelenti, hogy az üzenetek a szolgáltatástól érkeznek, és egyenként lesznek feldolgozva. Abban az esetben, ha prefetch_count 0, a ServiceBusReceiver.receive megpróbál gyorsítótárazni max_message_count (ha meg van adva) a szolgáltatásnak küldött kérésében.
- client_identifier
- str
Sztringalapú azonosító az ügyfélpéldány egyedi azonosításához. A Service Bus néhány hibaüzenettel társítja a hibákat a hibák könnyebb korrelációja érdekében. Ha nincs megadva, létrejön egy egyedi azonosító.
- socket_timeout
- float
Az az idő másodpercben, amíg a kapcsolat mögöttes szoftvercsatornájának várnia kell az adatok küldésekor és fogadásakor, mielőtt túllépi az időkorlátot. Az alapértelmezett érték a TransportType.Amqp esetében 0.2, a TransportType.AmqpOverWebsocket esetében pedig 1. Ha a kapcsolati hibák az írási időtúllépés miatt jelentkeznek, előfordulhat, hogy az alapértelmezettnél nagyobb értéket kell megadni.
Változók
- fully_qualified_namespace
- str
A Service Bus-névtér teljes gazdagépneve. A névtér formátuma: .servicebus.windows.net.
- entity_path
- str
Annak az entitásnak az elérési útja, amelyhez az ügyfél csatlakozik.
Metódusok
abandon_message |
Hagyja abba az üzenetet. Ez az üzenet visszakerül az üzenetsorba, és ismét elérhető lesz. |
close | |
complete_message |
Fejezze be az üzenetet. Ezzel eltávolítja az üzenetet az üzenetsorból. |
dead_letter_message |
Helyezze át az üzenetet a Kézbesítetlen levelek üzenetsorba. A Kézbesítetlen levelek üzenetsor egy alsor, amely a nem megfelelően feldolgozott, vagy egyéb módon további vizsgálatot vagy feldolgozást igénylő üzenetek tárolására használható. Az üzenetsor úgy is konfigurálható, hogy lejárt üzeneteket küldjön a Kézbesítetlen levelek üzenetsorba. |
defer_message |
Az üzenet ellenszegül. Ez az üzenet az üzenetsorban marad, de a fogadáshoz kifejezetten a sorszáma alapján kell kérni. |
next | |
peek_messages |
Tallózzon az üzenetsorban jelenleg függőben lévő üzenetek között. A betekintett üzeneteket a rendszer nem távolítja el az üzenetsorból, és nem is zárolja őket. Nem fejezhetők be, nem késleltethetők és nem olvashatók be. |
receive_deferred_messages |
Fogadja a korábban elhalasztott üzeneteket. Ha egy particionált entitásból halasztott üzeneteket fogad, a megadott sorszámok mindegyikének ugyanabból a partícióból származó üzeneteknek kell lenniük. |
receive_messages |
Egyszerre fogadjon egy kötegnyi üzenetet. Ez a módszer akkor optimális, ha egyszerre több üzenetet szeretne feldolgozni, vagy egy alkalmi fogadást egyetlen hívásként szeretne végrehajtani. Vegye figyelembe, hogy az egyetlen kötegben lekért üzenetek száma attól függ, hogy prefetch_count be van-e állítva a fogadóhoz. Ha prefetch_count nincs beállítva a fogadóhoz, a fogadó megpróbálja gyorsítótárazza a kérésben szereplő max_message_count üzeneteket a szolgáltatásnak. Ez a hívás fontossági sorrendbe helyezi a gyors visszatérést egy megadott kötegméret elérésekor, így amint legalább egy üzenet érkezik, és a bejövő üzenetek között eltérés van a megadott kötegmérettől függetlenül. |
renew_message_lock |
Újítsa meg az üzenetzárat. Ezzel fenntartja az üzenet zárolását, hogy a rendszer ne adja vissza az újra feldolgozandó üzenetsorba. Az üzenet befejezéséhez (vagy más módon történő rendezéséhez) a zárolást fenn kell tartani, és még nem járt le; lejárt zárolást nem lehet megújítani. A RECEIVE_AND_DELETE módban fogadott üzenetek nincsenek zárolva, ezért nem újíthatók meg. Ez a művelet csak nem munkamenetes üzenetekhez érhető el. |
abandon_message
Hagyja abba az üzenetet.
Ez az üzenet visszakerül az üzenetsorba, és ismét elérhető lesz.
abandon_message(message: ServiceBusReceivedMessage) -> None
Paraméterek
Visszatérési típus
Kivételek
Példák
Hagyja abba a fogadott üzenetet.
messages = servicebus_receiver.receive_messages(max_wait_time=5)
for message in messages:
servicebus_receiver.abandon_message(message)
close
close() -> None
Kivételek
complete_message
Fejezze be az üzenetet.
Ezzel eltávolítja az üzenetet az üzenetsorból.
complete_message(message: ServiceBusReceivedMessage) -> None
Paraméterek
Visszatérési típus
Kivételek
Példák
Töltse ki a kapott üzenetet.
messages = servicebus_receiver.receive_messages(max_wait_time=5)
for message in messages:
servicebus_receiver.complete_message(message)
dead_letter_message
Helyezze át az üzenetet a Kézbesítetlen levelek üzenetsorba.
A Kézbesítetlen levelek üzenetsor egy alsor, amely a nem megfelelően feldolgozott, vagy egyéb módon további vizsgálatot vagy feldolgozást igénylő üzenetek tárolására használható. Az üzenetsor úgy is konfigurálható, hogy lejárt üzeneteket küldjön a Kézbesítetlen levelek üzenetsorba.
dead_letter_message(message: ServiceBusReceivedMessage, reason: str | None = None, error_description: str | None = None) -> None
Paraméterek
Az üzenet kézbesítetlen betűs írásának részletes hibaleírása.
Visszatérési típus
Kivételek
Példák
Kézbesíthetetlen levél egy fogadott üzenetben.
messages = servicebus_receiver.receive_messages(max_wait_time=5)
for message in messages:
servicebus_receiver.dead_letter_message(message)
defer_message
Az üzenet ellenszegül.
Ez az üzenet az üzenetsorban marad, de a fogadáshoz kifejezetten a sorszáma alapján kell kérni.
defer_message(message: ServiceBusReceivedMessage) -> None
Paraméterek
Visszatérési típus
Kivételek
Példák
Fogadott üzenet elhalasztása.
messages = servicebus_receiver.receive_messages(max_wait_time=5)
for message in messages:
servicebus_receiver.defer_message(message)
next
next()
Kivételek
peek_messages
Tallózzon az üzenetsorban jelenleg függőben lévő üzenetek között.
A betekintett üzeneteket a rendszer nem távolítja el az üzenetsorból, és nem is zárolja őket. Nem fejezhetők be, nem késleltethetők és nem olvashatók be.
peek_messages(max_message_count: int = 1, *, sequence_number: int = 0, timeout: float | None = None, **kwargs: Any) -> List[ServiceBusReceivedMessage]
Paraméterek
- max_message_count
- int
A betekintendő üzenetek maximális száma. Az alapértelmezett érték az 1.
- sequence_number
- int
Egy üzenetütemezési szám, amelyből az üzenetek böngészése elkezdhető.
A művelet teljes időtúllépése másodpercben, az összes újrapróbálkozási művelettel együtt. Ha meg van adva, az értéknek 0-nál nagyobbnak kell lennie. Az alapértelmezett érték Nincs, ami azt jelenti, hogy nincs időtúllépés.
Válaszok
Az ~azure.servicebus.ServiceBusReceivedMessage listája.
Visszatérési típus
Kivételek
Példák
Tekintse meg a függőben lévő üzeneteket az üzenetsorban.
with servicebus_receiver:
messages = servicebus_receiver.peek_messages()
for message in messages:
print(str(message))
receive_deferred_messages
Fogadja a korábban elhalasztott üzeneteket.
Ha egy particionált entitásból halasztott üzeneteket fogad, a megadott sorszámok mindegyikének ugyanabból a partícióból származó üzeneteknek kell lenniük.
receive_deferred_messages(sequence_numbers: int | List[int], *, timeout: float | None = None, **kwargs: Any) -> List[ServiceBusReceivedMessage]
Paraméterek
A művelet teljes időtúllépése másodpercben, az összes újrapróbálkozási művelettel együtt. Ha meg van adva, az értéknek 0-nál nagyobbnak kell lennie. Az alapértelmezett érték Nincs, ami azt jelenti, hogy nincs időtúllépés.
Válaszok
A kért ~azure.servicebus.ServiceBusReceivedMessage példányok listája.
Visszatérési típus
Kivételek
Példák
Halasztott üzenetek fogadása a ServiceBustól.
with servicebus_receiver:
deferred_sequenced_numbers = []
messages = servicebus_receiver.receive_messages(max_wait_time=5)
for message in messages:
deferred_sequenced_numbers.append(message.sequence_number)
print(str(message))
servicebus_receiver.defer_message(message)
received_deferred_msg = servicebus_receiver.receive_deferred_messages(
sequence_numbers=deferred_sequenced_numbers
)
for msg in received_deferred_msg:
servicebus_receiver.complete_message(msg)
receive_messages
Egyszerre fogadjon egy kötegnyi üzenetet.
Ez a módszer akkor optimális, ha egyszerre több üzenetet szeretne feldolgozni, vagy egy alkalmi fogadást egyetlen hívásként szeretne végrehajtani.
Vegye figyelembe, hogy az egyetlen kötegben lekért üzenetek száma attól függ, hogy prefetch_count be van-e állítva a fogadóhoz. Ha prefetch_count nincs beállítva a fogadóhoz, a fogadó megpróbálja gyorsítótárazza a kérésben szereplő max_message_count üzeneteket a szolgáltatásnak.
Ez a hívás fontossági sorrendbe helyezi a gyors visszatérést egy megadott kötegméret elérésekor, így amint legalább egy üzenet érkezik, és a bejövő üzenetek között eltérés van a megadott kötegmérettől függetlenül.
receive_messages(max_message_count: int | None = 1, max_wait_time: float | None = None) -> List[ServiceBusReceivedMessage]
Paraméterek
A kötegben lévő üzenetek maximális száma. A visszaadott tényleges szám a prefetch_count és a bejövő stream sebességétől függ. A Nincs értékre állítás teljes mértékben az előzetes konfigurációtól függ. Az alapértelmezett érték 1.
Az első üzenet megérkezésének maximális időtartama másodpercben. Ha nem érkeznek üzenetek, és nincs megadva időtúllépés, a hívás csak a kapcsolat lezárásáig fog visszatérni. Ha meg van adva, az időtúllépési időszakon belül nem érkeznek üzenetek, a rendszer üres listát ad vissza.
Válaszok
A kapott üzenetek listája. Ha nem érhetők el üzenetek, ez egy üres lista lesz.
Visszatérési típus
Kivételek
Példák
Üzenetek fogadása a ServiceBustól.
with servicebus_receiver:
messages = servicebus_receiver.receive_messages(max_wait_time=5)
for message in messages:
print(str(message))
servicebus_receiver.complete_message(message)
renew_message_lock
Újítsa meg az üzenetzárat.
Ezzel fenntartja az üzenet zárolását, hogy a rendszer ne adja vissza az újra feldolgozandó üzenetsorba.
Az üzenet befejezéséhez (vagy más módon történő rendezéséhez) a zárolást fenn kell tartani, és még nem járt le; lejárt zárolást nem lehet megújítani.
A RECEIVE_AND_DELETE módban fogadott üzenetek nincsenek zárolva, ezért nem újíthatók meg. Ez a művelet csak nem munkamenetes üzenetekhez érhető el.
renew_message_lock(message: ServiceBusReceivedMessage, *, timeout: float | None = None, **kwargs: Any) -> datetime
Paraméterek
A művelet teljes időtúllépése másodpercben, az összes újrapróbálkozási művelettel együtt. Ha meg van adva, az értéknek 0-nál nagyobbnak kell lennie. Az alapértelmezett érték Nincs, ami azt jelenti, hogy nincs időtúllépés.
Válaszok
A zárolás utc datetime értéke a következő időpontra van beállítva: .
Visszatérési típus
Kivételek
Példák
Újítsa meg a zárolást egy fogadott üzeneten.
messages = servicebus_receiver.receive_messages(max_wait_time=5)
for message in messages:
servicebus_receiver.renew_message_lock(message)
Attribútumok
client_identifier
session
Kérje le a ServiceBusSession objektumot a fogadóval összekapcsolva. A munkamenet csak munkamenet-kompatibilis entitások számára érhető el, és Nem értéket ad vissza, ha nem munkamenet-fogadón hívja meg.
Visszatérési típus
Példák
Munkamenet lekérése fogadóból
with servicebus_client.get_queue_receiver(queue_name=queue_name, session_id=session_id) as receiver:
session = receiver.session
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: