Sdílet prostřednictvím


ServiceBusClient Třída

Třída ServiceBusClient definuje rozhraní vysoké úrovně pro získání ServiceBusSender a ServiceBusReceiver.

Dědičnost
builtins.object
ServiceBusClient

Konstruktor

ServiceBusClient(fully_qualified_namespace: str, credential: TokenCredential | AzureSasCredential | AzureNamedKeyCredential, *, retry_total: int = 3, retry_backoff_factor: float = 0.8, retry_backoff_max: float = 120, retry_mode: str = 'exponential', **kwargs: Any)

Parametry

fully_qualified_namespace
str
Vyžadováno

Plně kvalifikovaný název hostitele pro obor názvů služby Service Bus. Formát oboru názvů je .servicebus.windows.net.

credential
TokenCredential nebo AzureSasCredential nebo AzureNamedKeyCredential
Vyžadováno

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), případně je možné poskytnout také AzureSasCredential.

logging_enable
bool

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 pro komunikaci se službou Service Bus. Výchozí hodnota je TransportType.Amqp , v takovém případě se používá port 5671. Pokud je port 5671 v síťovém prostředí nedostupný nebo blokovaný, místo toho by se mohl použít transportType.AmqpOverWebsocket , který používá pro komunikaci port 443.

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 můžou být k dispozici také následující klíče: uživatelské jméno, heslo.

user_agent
str

Pokud je zadaný, přidá se před předdefinovaný řetězec uživatelského agenta.

retry_total
int

Celkový počet pokusů o opakování neúspěšné operace při výskytu chyby Výchozí hodnota je 3.

retry_backoff_factor
float

Delta back-off interně v jednotce sekundy mezi opakovanými pokusy. Výchozí hodnota je 0,8.

retry_backoff_max
float

Maximální interval back-off v jednotce sekundy. Výchozí hodnota je 120.

retry_mode
str

Chování zpoždění mezi opakovanými pokusy. Podporované hodnoty jsou "pevné" nebo "exponenciální", kde výchozí hodnota je "exponenciální".

custom_endpoint_address
str

Adresa vlastního koncového bodu, která se má použít k navázání připojení ke službě Service Bus a umožňuje směrování síťových požadavků přes všechny aplikační brány nebo jiné cesty potřebné pro hostitelské prostředí. Výchozí hodnota je Žádný. Formát bude vypadat takto: "sb://< custom_endpoint_hostname>:<custom_endpoint_port>". Pokud port není v custom_endpoint_address zadaný, použije se ve výchozím nastavení port 443.

connection_verify
str

Cesta k vlastnímu souboru CA_BUNDLE certifikátu SSL, který se používá k ověření identity koncového bodu připojení. Výchozí hodnota je Žádná, v takovém případě se použije certifi.where().

uamqp_transport
bool

Zda se má jako podkladový přenos použít knihovna uamqp . Výchozí hodnota je False a jako podkladový přenos se použije knihovna AMQP v Čistém Pythonu.

Příklady

Vytvořte novou instanci ServiceBusClient.


   import os
   from azure.identity import DefaultAzureCredential
   from azure.servicebus import ServiceBusClient
   fully_qualified_namespace = os.environ['SERVICEBUS_FULLY_QUALIFIED_NAMESPACE']
   servicebus_client = ServiceBusClient(
       fully_qualified_namespace=fully_qualified_namespace,
       credential=DefaultAzureCredential()
   )

Proměnné

fully_qualified_namespace
str

Plně kvalifikovaný název hostitele pro obor názvů služby Service Bus. Formát oboru názvů je .servicebus.windows.net.

Metody

close

Zavřete klienta ServiceBus. Všichni původní odesílatelé, příjemci a základní připojení budou vypnuti.

from_connection_string

Vytvořte ServiceBusClient z připojovacího řetězce.

get_queue_receiver

Získejte ServiceBusReceiver pro konkrétní frontu.

get_queue_sender

Získejte ServiceBusSender pro konkrétní frontu.

get_subscription_receiver

Získejte ServiceBusReceiver pro konkrétní předplatné v rámci tématu.

get_topic_sender

Získejte ServiceBusSender pro konkrétní téma.

close

Zavřete klienta ServiceBus. Všichni původní odesílatelé, příjemci a základní připojení budou vypnuti.

close() -> None

Návraty

Žádné

from_connection_string

Vytvořte ServiceBusClient z připojovacího řetězce.

from_connection_string(conn_str: str, *, retry_total: int = 3, retry_backoff_factor: float = 0.8, retry_backoff_max: float = 120, retry_mode: str = 'exponential', **kwargs: Any) -> ServiceBusClient

Parametry

conn_str
str
Vyžadováno

Připojovací řetězec služby Service Bus.

logging_enable
bool

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 pro komunikaci se službou Service Bus. Výchozí hodnota je TransportType.Amqp , v takovém případě se používá port 5671. Pokud je port 5671 v síťovém prostředí nedostupný nebo blokovaný, místo toho by se mohl použít transportType.AmqpOverWebsocket , který používá pro komunikaci port 443.

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 můžou být k dispozici také následující klíče: uživatelské jméno, heslo.

user_agent
str

Pokud je zadaný, přidá se před předdefinovaný řetězec uživatelského agenta.

retry_total
int

Celkový počet pokusů o opakování neúspěšné operace při výskytu chyby Výchozí hodnota je 3.

retry_backoff_factor
float

Delta back-off interně v jednotce sekundy mezi opakovanými pokusy. Výchozí hodnota je 0,8.

retry_backoff_max
float

Maximální interval back-off v jednotce sekundy. Výchozí hodnota je 120.

retry_mode
str

Chování zpoždění mezi opakovanými pokusy. Podporované hodnoty jsou pevné nebo exponenciální, kde výchozí hodnota je exponenciální.

custom_endpoint_address
str

Adresa vlastního koncového bodu, která se má použít k navázání připojení ke službě Service Bus a umožňuje směrování síťových požadavků přes všechny aplikační brány nebo jiné cesty potřebné pro hostitelské prostředí. Výchozí hodnota je Žádný. Formát bude vypadat takto: "sb://< custom_endpoint_hostname>:<custom_endpoint_port>". Pokud port není v custom_endpoint_address zadaný, použije se ve výchozím nastavení port 443.

connection_verify
str

Cesta k vlastnímu souboru CA_BUNDLE certifikátu SSL, který se používá k ověření identity koncového bodu připojení. Výchozí hodnota je Žádná, v takovém případě se použije certifi.where().

uamqp_transport
bool

Zda se má jako podkladový přenos použít knihovna uamqp . Výchozí hodnota je False a jako podkladový přenos se použije knihovna AMQP v Čistém Pythonu.

Návratový typ

Příklady

Vytvořte novou instanci ServiceBusClient z připojovacího řetězce.


   import os
   from azure.servicebus import ServiceBusClient
   servicebus_connection_str = os.environ['SERVICEBUS_CONNECTION_STR']
   servicebus_client = ServiceBusClient.from_connection_string(conn_str=servicebus_connection_str)

get_queue_receiver

Získejte ServiceBusReceiver pro konkrétní frontu.

get_queue_receiver(queue_name: str, *, session_id: str | ~typing.Literal[<ServiceBusSessionFilter.NEXT_AVAILABLE: 0>] | None = None, sub_queue: ~azure.servicebus._common.constants.ServiceBusSubQueue | str | None = None, receive_mode: ~azure.servicebus._common.constants.ServiceBusReceiveMode | str = ServiceBusReceiveMode.PEEK_LOCK, max_wait_time: float | None = None, auto_lock_renewer: ~azure.servicebus._common.auto_lock_renewer.AutoLockRenewer | None = None, prefetch_count: int = 0, **kwargs: ~typing.Any) -> ServiceBusReceiver

Parametry

queue_name
str
Vyžadováno

Cesta konkrétní fronty služby Service Bus, ke které se klient připojuje.

session_id
str nebo <xref:azure.servicebus.NEXT_AVAILABLE_SESSION>

Konkrétní relace, ze které se má přijímat. Tato hodnota musí být zadána pro frontu v relaci, jinak musí být žádná. Pokud chcete přijímat zprávy z další dostupné relace, nastavte ji na ~azure.servicebus.NEXT_AVAILABLE_SESSION.

sub_queue
str nebo ServiceBusSubQueue nebo None

Pokud je tato možnost zadána, bude se tento příjemce připojovat k podcedí. To zahrnuje DEAD_LETTER a TRANSFER_DEAD_LETTER fronty, obsahují zprávy, které nelze doručit příjemci nebo zprávy, které nelze zpracovat. Výchozí hodnota je Žádný, což znamená připojení k primární frontě. Lze přiřadit hodnoty z výčtu ServiceBusSubQueue nebo ekvivalentních řetězcových hodnot "deadletter" a "transferdeadletter".

receive_mode
Union[ServiceBusReceiveMode, str]

Receive_mode, pomocí kterého se budou zprávy z entity načítat. Tyto 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ž se odeberou z fronty. Zprávy přijaté s RECEIVE_AND_DELETE budou okamžitě odebrány z fronty a nelze je následně odmítnout ani znovu přijmout, pokud klient zprávu nezpracuje. Výchozí receive_mode je PEEK_LOCK.

max_wait_time
Optional[float]

Časový limit v sekundách mezi přijatými zprávami, po kterém příjemce automaticky přestane přijímat. Výchozí hodnota je Žádný, což znamená žádný časový limit. Pokud dochází k chybám připojení kvůli vypršení časového limitu zápisu, může být potřeba upravit hodnotu časového limitu připojení. Další podrobnosti najdete v socket_timeout volitelném parametru.

auto_lock_renewer
Optional[AutoLockRenewer]

Je možné poskytnout ~azure.servicebus.AutoLockRenewer tak, aby se zprávy automaticky zaregistrovaly při přijetí. 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í ukládat do mezipaměti s jednotlivými požadavky na službu. Toto nastavení je určené pouze pro pokročilé ladění výkonu. Zvýšením této hodnoty se zvýší výkon propustnosti zpráv, ale zvýší se pravděpodobnost, že platnost zpráv vyprší, když se uloží do mezipaměti, pokud se nezpracují dostatečně rychle. Výchozí hodnota je 0, což znamená, že zprávy se budou přijímat ze služby a zpracovávat je 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é žádosti do služby.

client_identifier
str

Identifikátor založený na řetězci pro jedinečnou identifikaci instance příjemce. Service Bus ji přidruží k některým chybovým zprávm, aby se usnadnila korelace chyb. Pokud není zadáno, 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říjmu dat před vypršením časového limitu. Výchozí hodnota je 0,2 pro TransportType.Amqp a 1 pro TransportType.AmqpOverWebsocket. Pokud dochází k chybám připojení kvůli vypršení časového limitu zápisu, může být potřeba předat větší než výchozí hodnotu.

Návratový typ

Příklady

Vytvořte novou instanci ServiceBusReceiver z ServiceBusClient.


   import os
   from azure.servicebus import ServiceBusClient
   servicebus_connection_str = os.environ['SERVICEBUS_CONNECTION_STR']
   queue_name = os.environ['SERVICEBUS_QUEUE_NAME']
   servicebus_client = ServiceBusClient.from_connection_string(conn_str=servicebus_connection_str)
   with servicebus_client:
       queue_receiver = servicebus_client.get_queue_receiver(queue_name=queue_name)

get_queue_sender

Získejte ServiceBusSender pro konkrétní frontu.

get_queue_sender(queue_name: str, **kwargs: Any) -> ServiceBusSender

Parametry

queue_name
str
Vyžadováno

Cesta konkrétní fronty služby Service Bus, ke které se klient připojuje.

client_identifier
str

Identifikátor založený na řetězci pro jedinečnou identifikaci instance odesílatele. Service Bus ji přidruží k některým chybovým zprávm, aby se usnadnila korelace chyb. Pokud není zadáno, 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říjmu dat před vypršením časového limitu. Výchozí hodnota je 0,2 pro TransportType.Amqp a 1 pro TransportType.AmqpOverWebsocket. Pokud dochází k chybám připojení kvůli vypršení časového limitu zápisu, může být potřeba předat větší než výchozí hodnotu.

Návraty

Odesílatel fronty.

Návratový typ

Příklady

Vytvořte novou instanci ServiceBusSender z ServiceBusClient.


   import os
   from azure.servicebus import ServiceBusClient
   servicebus_connection_str = os.environ['SERVICEBUS_CONNECTION_STR']
   queue_name = os.environ['SERVICEBUS_QUEUE_NAME']
   servicebus_client = ServiceBusClient.from_connection_string(conn_str=servicebus_connection_str)
   with servicebus_client:
       queue_sender = servicebus_client.get_queue_sender(queue_name=queue_name)

get_subscription_receiver

Získejte ServiceBusReceiver pro konkrétní předplatné v rámci tématu.

get_subscription_receiver(topic_name: str, subscription_name: str, *, session_id: str | ~typing.Literal[<ServiceBusSessionFilter.NEXT_AVAILABLE: 0>] | None = None, sub_queue: ~azure.servicebus._common.constants.ServiceBusSubQueue | str | None = None, receive_mode: ~azure.servicebus._common.constants.ServiceBusReceiveMode | str = ServiceBusReceiveMode.PEEK_LOCK, max_wait_time: float | None = None, auto_lock_renewer: ~azure.servicebus._common.auto_lock_renewer.AutoLockRenewer | None = None, prefetch_count: int = 0, **kwargs: ~typing.Any) -> ServiceBusReceiver

Parametry

topic_name
str
Vyžadováno

Název konkrétního tématu služby Service Bus, ke které se klient připojuje.

subscription_name
str
Vyžadováno

Název konkrétního předplatného služby Service Bus v daném tématu služby Service Bus.

session_id
str nebo <xref:azure.servicebus.NEXT_AVAILABLE_SESSION>

Konkrétní relace, ze které se má přijímat. Tato hodnota musí být zadána pro předplatné s režimem relace, jinak musí být žádná. Pokud chcete přijímat zprávy z další dostupné relace, nastavte ji na ~azure.servicebus.NEXT_AVAILABLE_SESSION.

sub_queue
str nebo ServiceBusSubQueue nebo None

Pokud je tato možnost zadána, bude se tento příjemce připojovat k podcedí. To zahrnuje DEAD_LETTER a TRANSFER_DEAD_LETTER fronty, obsahují zprávy, které nelze doručit příjemci nebo zprávy, které nelze zpracovat. Výchozí hodnota je Žádný, což znamená připojení k primární frontě. Lze přiřadit hodnoty z výčtu ServiceBusSubQueue nebo ekvivalentních řetězcových hodnot "deadletter" a "transferdeadletter".

receive_mode
Union[ServiceBusReceiveMode, str]

Receive_mode, pomocí kterého se budou zprávy z entity načítat. Tyto 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ž se odeberou z předplatného. Zprávy přijaté s RECEIVE_AND_DELETE budou okamžitě odebrány z odběru a nelze je následně odmítnout ani znovu přijmout, pokud klient zprávu nezpracuje. Výchozí receive_mode je PEEK_LOCK.

max_wait_time
Optional[float]

Časový limit v sekundách mezi přijatými zprávami, po kterém příjemce automaticky přestane přijímat. Výchozí hodnota je Žádný, což znamená žádný časový limit. Pokud dochází k chybám připojení kvůli vypršení časového limitu zápisu, může být potřeba upravit hodnotu časového limitu připojení. Další podrobnosti najdete v socket_timeout volitelném parametru.

auto_lock_renewer
Optional[AutoLockRenewer]

Je možné poskytnout ~azure.servicebus.AutoLockRenewer tak, aby se zprávy automaticky zaregistrovaly při přijetí. 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í ukládat do mezipaměti s jednotlivými požadavky na službu. Toto nastavení je určené pouze pro pokročilé ladění výkonu. Zvýšením této hodnoty se zvýší výkon propustnosti zpráv, ale zvýší se pravděpodobnost, že platnost zpráv vyprší, když se uloží do mezipaměti, pokud se nezpracují dostatečně rychle. Výchozí hodnota je 0, což znamená, že zprávy se budou přijímat ze služby a zpracovávat je 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é žádosti do služby.

client_identifier
str

Identifikátor založený na řetězci pro jedinečnou identifikaci instance příjemce. Service Bus ji přidruží k některým chybovým zprávm, aby se usnadnila korelace chyb. Pokud není zadáno, 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říjmu dat před vypršením časového limitu. Výchozí hodnota je 0,2 pro TransportType.Amqp a 1 pro TransportType.AmqpOverWebsocket. Pokud dochází k chybám připojení kvůli vypršení časového limitu zápisu, může být potřeba předat větší než výchozí hodnotu.

Návratový typ

Příklady

Vytvořte novou instanci ServiceBusReceiver z ServiceBusClient.


   import os
   from azure.servicebus import ServiceBusClient
   servicebus_connection_str = os.environ['SERVICEBUS_CONNECTION_STR']
   topic_name = os.environ["SERVICEBUS_TOPIC_NAME"]
   subscription_name = os.environ["SERVICEBUS_SUBSCRIPTION_NAME"]
   servicebus_client = ServiceBusClient.from_connection_string(conn_str=servicebus_connection_str)
   with servicebus_client:
       subscription_receiver = servicebus_client.get_subscription_receiver(
           topic_name=topic_name,
           subscription_name=subscription_name,
       )

get_topic_sender

Získejte ServiceBusSender pro konkrétní téma.

get_topic_sender(topic_name: str, **kwargs: Any) -> ServiceBusSender

Parametry

topic_name
str
Vyžadováno

Cesta konkrétního tématu služby Service Bus, ke které se klient připojuje.

client_identifier
str

Identifikátor založený na řetězci pro jedinečnou identifikaci instance odesílatele. Service Bus ji přidruží k některým chybovým zprávm, aby se usnadnila korelace chyb. Pokud není zadáno, 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říjmu dat před vypršením časového limitu. Výchozí hodnota je 0,2 pro TransportType.Amqp a 1 pro TransportType.AmqpOverWebsocket. Pokud dochází k chybám připojení kvůli vypršení časového limitu zápisu, může být potřeba předat větší než výchozí hodnotu.

Návraty

Odesílatel tématu.

Návratový typ

Příklady

Vytvořte novou instanci ServiceBusSender z ServiceBusClient.


   import os
   from azure.servicebus import ServiceBusClient
   servicebus_connection_str = os.environ['SERVICEBUS_CONNECTION_STR']
   topic_name = os.environ['SERVICEBUS_TOPIC_NAME']
   servicebus_client = ServiceBusClient.from_connection_string(conn_str=servicebus_connection_str)
   with servicebus_client:
       topic_sender = servicebus_client.get_topic_sender(topic_name=topic_name)