ServiceBusReceiver Klass
Klassen ServiceBusReceiver definierar ett högnivågränssnitt för att ta emot meddelanden från Azure Service Bus-kö eller ämnesprenumeration.
De två primära kanalerna för meddelandekvitto är receive() för att göra en enda begäran om meddelanden och för meddelande i mottagaren: att kontinuerligt ta emot inkommande meddelanden på ett pågående sätt.
get_<queue/subscription>_receiver
Använd metoden ~azure.servicebus.ServiceBusClient för att skapa en ServiceBusReceiver-instans.
- Arv
-
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)
Parametrar
- fully_qualified_namespace
- str
Det fullständigt kvalificerade värdnamnet för Service Bus-namnområdet. Namnområdesformatet är: .servicebus.windows.net.
- credential
- TokenCredential eller AzureSasCredential eller AzureNamedKeyCredential
Autentiseringsobjektet som används för autentisering som implementerar ett visst gränssnitt för att hämta token. Den accepterar autentiseringsobjekt som genereras av azure-identity-biblioteket och objekt som implementerar metoden *get_token(self, scopes), eller alternativt kan en AzureSasCredential också anges.
- queue_name
- str
Sökvägen till den specifika Service Bus-kö som klienten ansluter till.
- topic_name
- str
Sökvägen till ett specifikt Service Bus-ämne som innehåller den prenumeration som klienten ansluter till.
- subscription_name
- str
Sökvägen till en specifik Service Bus-prenumeration under det angivna ämnet som klienten ansluter till.
Tidsgränsen i sekunder mellan mottagna meddelanden varefter mottagaren slutar ta emot automatiskt. Standardvärdet är Ingen, vilket innebär att tidsgränsen inte nås.
- receive_mode
- Union[ServiceBusReceiveMode, str]
Det läge med vilket meddelanden hämtas från entiteten. De två alternativen är PEEK_LOCK och RECEIVE_AND_DELETE. Meddelanden som tas emot med PEEK_LOCK måste lösas inom en viss låsperiod innan de tas bort från kön. Meddelanden som tas emot med RECEIVE_AND_DELETE tas omedelbart bort från kön och kan inte överges eller tas emot igen om klienten inte kan bearbeta meddelandet. Standardläget är PEEK_LOCK.
- logging_enable
- bool
Om du vill mata ut nätverksspårningsloggar till loggaren. Standardvärdet är Falskt.
- transport_type
- TransportType
Den typ av transportprotokoll som ska användas för kommunikation med Service Bus-tjänsten. Standardvärdet är TransportType.Amqp.
- http_proxy
- Dict
HTTP-proxyinställningar. Det här måste vara en ordlista med följande nycklar: "proxy_hostname" (str-värde) och "proxy_port" (int-värde). Dessutom kan följande nycklar finnas: "användarnamn", "lösenord".
- user_agent
- str
Om detta anges läggs detta till framför den inbyggda användaragentsträngen.
- auto_lock_renewer
- Optional[AutoLockRenewer]
En ~azure.servicebus.AutoLockRenewer kan tillhandahållas så att meddelanden registreras automatiskt vid kvitto. Om mottagaren är en sessionsmottagare gäller den i stället för sessionen.
- prefetch_count
- int
Det maximala antalet meddelanden som ska cachelagrats med varje begäran till tjänsten. Den här inställningen är endast avsedd för avancerad prestandajustering. Om du ökar det här värdet förbättras dataflödesprestanda för meddelanden, men det ökar risken för att meddelanden upphör att gälla medan de cachelagras om de inte bearbetas tillräckligt snabbt. Standardvärdet är 0, vilket innebär att meddelanden tas emot från tjänsten och bearbetas en i taget. Om prefetch_count är 0 försöker ServiceBusReceiver.receive cachelagrar max_message_count (om det tillhandahålls) inom sin begäran till tjänsten.
- client_identifier
- str
En strängbaserad identifierare som unikt identifierar klientinstansen. Service Bus associerar den med vissa felmeddelanden för enklare korrelation av fel. Om inget anges genereras ett unikt ID.
- socket_timeout
- float
Tiden i sekunder som den underliggande socketen på anslutningen ska vänta när data skickas och tas emot innan tidsgränsen nås. Standardvärdet är 0,2 för TransportType.Amqp och 1 för TransportType.AmqpOverWebsocket. Om anslutningsfel uppstår på grund av tidsgränsen för skrivning kan ett större värde än standardvärdet behöva skickas in.
Variabler
- fully_qualified_namespace
- str
Det fullständigt kvalificerade värdnamnet för Service Bus-namnområdet. Namnområdesformatet är: .servicebus.windows.net.
- entity_path
- str
Sökvägen till entiteten som klienten ansluter till.
Metoder
abandon_message |
Avbryt meddelandet. Det här meddelandet kommer att returneras till kön och göras tillgängligt för att tas emot igen. |
close | |
complete_message |
Slutför meddelandet. Detta tar bort meddelandet från kön. |
dead_letter_message |
Flytta meddelandet till kön Obeställbara meddelanden. Kön för obeställbara meddelanden är en underkö som kan användas för att lagra meddelanden som inte bearbetas korrekt, eller som på annat sätt kräver ytterligare kontroll eller bearbetning. Kön kan också konfigureras för att skicka utgångna meddelanden till kön Obeställbara meddelanden. |
defer_message |
Skjuter upp meddelandet. Det här meddelandet finns kvar i kön men måste begäras specifikt av dess sekvensnummer för att kunna tas emot. |
next | |
peek_messages |
Bläddra bland meddelanden som väntar i kön. Genomsiktade meddelanden tas inte bort från kön och de är inte heller låsta. De kan inte fyllas i, skjutas upp eller obeställbara. |
receive_deferred_messages |
Ta emot meddelanden som tidigare har skjutits upp. När du tar emot uppskjutna meddelanden från en partitionerad entitet måste alla angivna sekvensnummer vara meddelanden från samma partition. |
receive_messages |
Ta emot en batch med meddelanden samtidigt. Den här metoden är optimal om du vill bearbeta flera meddelanden samtidigt eller utföra en ad hoc-mottagning som ett enda anrop. Observera att antalet meddelanden som hämtas i en enda batch beror på om prefetch_count har angetts för mottagaren. Om prefetch_count inte har angetts för mottagaren försöker mottagaren cachelagrar max_message_count (om det tillhandahålls) meddelanden i begäran till tjänsten. Det här anropet prioriterar att returnera snabbt över att uppfylla en angiven batchstorlek, så returneras så snart minst ett meddelande tas emot och det finns en lucka i inkommande meddelanden oavsett den angivna batchstorleken. |
renew_message_lock |
Förnya meddelandelåset. Detta behåller låset på meddelandet för att säkerställa att det inte returneras till kön som ska bearbetas på nytt. För att kunna slutföra (eller på annat sätt reglera) meddelandet måste låset underhållas och kan inte redan ha upphört att gälla. det går inte att förnya ett utgånget lås. Meddelanden som tas emot via RECEIVE_AND_DELETE läge är inte låsta och kan därför inte förnyas. Den här åtgärden är endast tillgänglig för icke-sessionskänsliga meddelanden. |
abandon_message
Avbryt meddelandet.
Det här meddelandet kommer att returneras till kön och göras tillgängligt för att tas emot igen.
abandon_message(message: ServiceBusReceivedMessage) -> None
Parametrar
Returtyp
Undantag
Exempel
Överge ett mottaget meddelande.
messages = servicebus_receiver.receive_messages(max_wait_time=5)
for message in messages:
servicebus_receiver.abandon_message(message)
close
close() -> None
Undantag
complete_message
Slutför meddelandet.
Detta tar bort meddelandet från kön.
complete_message(message: ServiceBusReceivedMessage) -> None
Parametrar
Returtyp
Undantag
Exempel
Slutför ett mottaget meddelande.
messages = servicebus_receiver.receive_messages(max_wait_time=5)
for message in messages:
servicebus_receiver.complete_message(message)
dead_letter_message
Flytta meddelandet till kön Obeställbara meddelanden.
Kön för obeställbara meddelanden är en underkö som kan användas för att lagra meddelanden som inte bearbetas korrekt, eller som på annat sätt kräver ytterligare kontroll eller bearbetning. Kön kan också konfigureras för att skicka utgångna meddelanden till kön Obeställbara meddelanden.
dead_letter_message(message: ServiceBusReceivedMessage, reason: str | None = None, error_description: str | None = None) -> None
Parametrar
Anledningen till att meddelandet skrivs i obeställbara meddelanden.
Den detaljerade felbeskrivningen för obeställbara meddelanden i meddelandet.
Returtyp
Undantag
Exempel
Obeställbara meddelanden ett mottaget meddelande.
messages = servicebus_receiver.receive_messages(max_wait_time=5)
for message in messages:
servicebus_receiver.dead_letter_message(message)
defer_message
Skjuter upp meddelandet.
Det här meddelandet finns kvar i kön men måste begäras specifikt av dess sekvensnummer för att kunna tas emot.
defer_message(message: ServiceBusReceivedMessage) -> None
Parametrar
Returtyp
Undantag
Exempel
Skjut upp ett mottaget meddelande.
messages = servicebus_receiver.receive_messages(max_wait_time=5)
for message in messages:
servicebus_receiver.defer_message(message)
next
next()
Undantag
peek_messages
Bläddra bland meddelanden som väntar i kön.
Genomsiktade meddelanden tas inte bort från kön och de är inte heller låsta. De kan inte fyllas i, skjutas upp eller obeställbara.
peek_messages(max_message_count: int = 1, *, sequence_number: int = 0, timeout: float | None = None, **kwargs: Any) -> List[ServiceBusReceivedMessage]
Parametrar
- max_message_count
- int
Det maximala antalet meddelanden som ska provas. Standardvärdet är 1.
- sequence_number
- int
Ett meddelandesekvensnummer som du vill börja bläddra bland meddelanden från.
Den totala tidsgränsen för åtgärden i sekunder, inklusive alla återförsök. Värdet måste vara större än 0 om det anges. Standardvärdet är Ingen, vilket innebär att tidsgränsen inte nås.
Returer
En lista med ~azure.servicebus.ServiceBusReceivedMessage.
Returtyp
Undantag
Exempel
Titta på väntande meddelanden i kön.
with servicebus_receiver:
messages = servicebus_receiver.peek_messages()
for message in messages:
print(str(message))
receive_deferred_messages
Ta emot meddelanden som tidigare har skjutits upp.
När du tar emot uppskjutna meddelanden från en partitionerad entitet måste alla angivna sekvensnummer vara meddelanden från samma partition.
receive_deferred_messages(sequence_numbers: int | List[int], *, timeout: float | None = None, **kwargs: Any) -> List[ServiceBusReceivedMessage]
Parametrar
En lista över sekvensnummer för meddelanden som har skjutits upp.
Den totala tidsgränsen för åtgärden i sekunder, inklusive alla återförsök. Värdet måste vara större än 0 om det anges. Standardvärdet är Ingen, vilket innebär att tidsgränsen inte nås.
Returer
En lista över begärda ~azure.servicebus.ServiceBusReceivedMessage-instanser.
Returtyp
Undantag
Exempel
Ta emot uppskjutna meddelanden från ServiceBus.
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
Ta emot en batch med meddelanden samtidigt.
Den här metoden är optimal om du vill bearbeta flera meddelanden samtidigt eller utföra en ad hoc-mottagning som ett enda anrop.
Observera att antalet meddelanden som hämtas i en enda batch beror på om prefetch_count har angetts för mottagaren. Om prefetch_count inte har angetts för mottagaren försöker mottagaren cachelagrar max_message_count (om det tillhandahålls) meddelanden i begäran till tjänsten.
Det här anropet prioriterar att returnera snabbt över att uppfylla en angiven batchstorlek, så returneras så snart minst ett meddelande tas emot och det finns en lucka i inkommande meddelanden oavsett den angivna batchstorleken.
receive_messages(max_message_count: int | None = 1, max_wait_time: float | None = None) -> List[ServiceBusReceivedMessage]
Parametrar
Maximalt antal meddelanden i batchen. Det faktiska antalet som returneras beror på prefetch_count och inkommande strömhastighet. Inställningen Till Ingen beror helt på prefetch-konfigurationen. Standardvärdet är 1.
Maximal väntetid i sekunder för att det första meddelandet ska tas emot. Om inga meddelanden tas emot och ingen tidsgräns har angetts returneras inte det här anropet förrän anslutningen har stängts. Om inget meddelande tas emot inom tidsgränsen returneras en tom lista.
Returer
En lista över mottagna meddelanden. Om inga meddelanden är tillgängliga är det här en tom lista.
Returtyp
Undantag
Exempel
Ta emot meddelanden från ServiceBus.
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
Förnya meddelandelåset.
Detta behåller låset på meddelandet för att säkerställa att det inte returneras till kön som ska bearbetas på nytt.
För att kunna slutföra (eller på annat sätt reglera) meddelandet måste låset underhållas och kan inte redan ha upphört att gälla. det går inte att förnya ett utgånget lås.
Meddelanden som tas emot via RECEIVE_AND_DELETE läge är inte låsta och kan därför inte förnyas. Den här åtgärden är endast tillgänglig för icke-sessionskänsliga meddelanden.
renew_message_lock(message: ServiceBusReceivedMessage, *, timeout: float | None = None, **kwargs: Any) -> datetime
Parametrar
Den totala tidsgränsen för åtgärden i sekunder, inklusive alla återförsök. Värdet måste vara större än 0 om det anges. Standardvärdet är Ingen, vilket innebär ingen tidsgräns.
Returer
Utc datetime som låset är inställt på förfaller på.
Returtyp
Undantag
Exempel
Förnya låset på ett mottaget meddelande.
messages = servicebus_receiver.receive_messages(max_wait_time=5)
for message in messages:
servicebus_receiver.renew_message_lock(message)
Attribut
client_identifier
session
Hämta ServiceBusSession-objektet som är länkat till mottagaren. Sessionen är endast tillgänglig för sessionsaktiverade entiteter. Den returnerar Ingen om den anropas på en mottagare som inte är sessionsaktiverad.
Returtyp
Exempel
Hämta session från en mottagare
with servicebus_client.get_queue_receiver(queue_name=queue_name, session_id=session_id) as receiver:
session = receiver.session
Feedback
https://aka.ms/ContentUserFeedback.
Kommer snart: Under hela 2024 kommer vi att fasa ut GitHub-problem som feedbackmekanism för innehåll och ersätta det med ett nytt feedbacksystem. Mer information finns i:Skicka och visa feedback för