Partilhar via


ServiceBusClient Classe

A classe ServiceBusClient define uma interface de alto nível para obter ServiceBusSender e ServiceBusReceiver.

Herança
builtins.object
ServiceBusClient

Construtor

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)

Parâmetros

fully_qualified_namespace
str
Necessário

O nome de anfitrião completamente qualificado para o espaço de nomes do Service Bus. O formato do espaço de nomes é: .servicebus.windows.net.

credential
TokenCredential ou AzureSasCredential ou AzureNamedKeyCredential
Necessário

O objeto de credencial utilizado para autenticação que implementa uma interface específica para obter tokens. Aceita objetos de credenciais gerados pela biblioteca de identidades do azure e objetos que implementam o método *get_token(auto, âmbitos) ou, em alternativa, também pode ser fornecido um AzureSasCredential.

logging_enable
bool

Se pretende exportar registos de rastreio de rede para o logger. A predefinição é Falso.

transport_type
TransportType

O tipo de protocolo de transporte que será utilizado para comunicar com o serviço Service Bus. A predefinição é TransportType.Amqp , caso em que é utilizada a porta 5671. Se a porta 5671 estiver indisponível/bloqueada no ambiente de rede, pode utilizar TransportType.AmqpOverWebsocket , que utiliza a porta 443 para comunicação.

http_proxy
Dict

Definições de proxy HTTP. Tem de ser um dicionário com as seguintes chaves: "proxy_hostname" (valor str) e "proxy_port" (valor int). Além disso, também podem estar presentes as seguintes chaves: "nome de utilizador", "palavra-passe".

user_agent
str

Se for especificado, será adicionado à frente da cadeia de agente de utilizador incorporada.

retry_total
int

O número total de tentativas de refazer uma operação falhada quando ocorre um erro. O valor predefinido é 3.

retry_backoff_factor
float

Trás delta interna na unidade de segundo entre repetições. O valor predefinido é 0,8.

retry_backoff_max
float

Intervalo de recuo máximo na unidade de segundo. O valor predefinido é 120.

retry_mode
str

O comportamento de atraso entre tentativas de repetição. Os valores suportados são "fixos" ou "exponenciais", em que a predefinição é "exponencial".

custom_endpoint_address
str

O endereço de ponto final personalizado a utilizar para estabelecer uma ligação ao serviço do Service Bus, permitindo que os pedidos de rede sejam encaminhados através de quaisquer gateways de aplicação ou outros caminhos necessários para o ambiente anfitrião. A predefinição é Nenhuma. O formato seria como "sb://< custom_endpoint_hostname>:<custom_endpoint_port>". Se a porta não for especificada no custom_endpoint_address, será utilizada por predefinição a porta 443.

connection_verify
str

Caminho para o ficheiro de CA_BUNDLE personalizado do certificado SSL que é utilizado para autenticar a identidade do ponto final de ligação. A predefinição é Nenhum, caso em que certifi.where() será utilizado.

uamqp_transport
bool

Se pretende utilizar a biblioteca uamqp como o transporte subjacente. O valor predefinido é Falso e a biblioteca AMQP de Python Puro será utilizada como o transporte subjacente.

Exemplos

Crie uma nova instância do 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()
   )

Variáveis

fully_qualified_namespace
str

O nome de anfitrião completamente qualificado para o espaço de nomes do Service Bus. O formato do espaço de nomes é: .servicebus.windows.net.

Métodos

close

Feche o cliente ServiceBus. Todos os remetentes gerados, recetores e ligação subjacente serão encerrados.

from_connection_string

Crie um ServiceBusClient a partir de uma cadeia de ligação.

get_queue_receiver

Obtenha ServiceBusReceiver para a fila específica.

get_queue_sender

Obtenha o ServiceBusSender para a fila específica.

get_subscription_receiver

Obtenha o ServiceBusReceiver para a subscrição específica no tópico.

get_topic_sender

Obtenha o ServiceBusSender para o tópico específico.

close

Feche o cliente ServiceBus. Todos os remetentes gerados, recetores e ligação subjacente serão encerrados.

close() -> None

Devoluções

Nenhuma

from_connection_string

Crie um ServiceBusClient a partir de uma cadeia de ligação.

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

Parâmetros

conn_str
str
Necessário

A cadeia de ligação de um Service Bus.

logging_enable
bool

Se pretende exportar registos de rastreio de rede para o logger. A predefinição é Falso.

transport_type
TransportType

O tipo de protocolo de transporte que será utilizado para comunicar com o serviço Service Bus. A predefinição é TransportType.Amqp , caso em que é utilizada a porta 5671. Se a porta 5671 estiver indisponível/bloqueada no ambiente de rede, pode utilizar TransportType.AmqpOverWebsocket , que utiliza a porta 443 para comunicação.

http_proxy
Dict

Definições de proxy HTTP. Tem de ser um dicionário com as seguintes chaves: "proxy_hostname" (valor str) e "proxy_port" (valor int). Além disso, também podem estar presentes as seguintes chaves: "nome de utilizador", "palavra-passe".

user_agent
str

Se for especificado, será adicionado à frente da cadeia de agente de utilizador incorporada.

retry_total
int

O número total de tentativas de refazer uma operação falhada quando ocorre um erro. O valor predefinido é 3.

retry_backoff_factor
float

Trás delta interna na unidade de segundo entre repetições. O valor predefinido é 0,8.

retry_backoff_max
float

Intervalo de recuo máximo na unidade de segundo. O valor predefinido é 120.

retry_mode
str

O comportamento de atraso entre tentativas de repetição. Os valores suportados são "fixos" ou "exponenciais", em que a predefinição é "exponencial".

custom_endpoint_address
str

O endereço de ponto final personalizado a utilizar para estabelecer uma ligação ao serviço do Service Bus, permitindo que os pedidos de rede sejam encaminhados através de quaisquer gateways de aplicação ou outros caminhos necessários para o ambiente anfitrião. A predefinição é Nenhuma. O formato seria como "sb://< custom_endpoint_hostname>:<custom_endpoint_port>". Se a porta não for especificada no custom_endpoint_address, será utilizada por predefinição a porta 443.

connection_verify
str

Caminho para o ficheiro de CA_BUNDLE personalizado do certificado SSL que é utilizado para autenticar a identidade do ponto final de ligação. A predefinição é Nenhum, caso em que certifi.where() será utilizado.

uamqp_transport
bool

Se pretende utilizar a biblioteca uamqp como o transporte subjacente. O valor predefinido é Falso e a biblioteca AMQP de Python Puro será utilizada como o transporte subjacente.

Tipo de retorno

Exemplos

Crie uma nova instância do ServiceBusClient a partir da cadeia de ligação.


   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

Obtenha ServiceBusReceiver para a fila específica.

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

Parâmetros

queue_name
str
Necessário

O caminho da Fila específica do Service Bus à qual o cliente se liga.

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

Uma sessão específica a partir da qual receber. Tem de ser especificado para uma fila com sessão, caso contrário, tem de ser Nenhum. Para receber mensagens da próxima sessão disponível, defina esta opção como ~azure.servicebus.NEXT_AVAILABLE_SESSION.

sub_queue
str ou ServiceBusSubQueue ou None

Se for especificado, a subconsulta à qual este recetor se ligará. Isto inclui as filas DEAD_LETTER e TRANSFER_DEAD_LETTER, contém mensagens que não podem ser entregues a nenhum recetor ou mensagens que não podem ser processadas. A predefinição é Nenhuma, ou seja, ligar à fila primária. Podem ser atribuídos valores de ServiceBusSubQueue ou valores de cadeia equivalentes "deadletter" e "transferdeadletter".

receive_mode
Union[ServiceBusReceiveMode, str]

O receive_mode com que mensagens serão obtidas da entidade. As duas opções são PEEK_LOCK e RECEIVE_AND_DELETE. As mensagens recebidas com PEEK_LOCK têm de ser resolvidas num determinado período de bloqueio antes de serem removidas da fila. As mensagens recebidas com RECEIVE_AND_DELETE serão imediatamente removidas da fila e não poderão ser posteriormente rejeitadas ou novamente recebidas se o cliente não conseguir processar a mensagem. A receive_mode predefinida é PEEK_LOCK.

max_wait_time
Optional[float]

O tempo limite em segundos entre as mensagens recebidas após as quais o recetor deixará de receber automaticamente. O valor predefinido é Nenhum, o que significa que não há tempo limite. Se estiverem a ocorrer erros de ligação devido ao tempo limite de escrita, o valor de tempo limite da ligação poderá ter de ser ajustado. Veja o parâmetro opcional socket_timeout para obter mais detalhes.

auto_lock_renewer
Optional[AutoLockRenewer]

Pode ser fornecido ~azure.servicebus.AutoLockRenewer para que as mensagens sejam registadas automaticamente no recibo. Se o recetor for um recetor de sessão, será aplicado à sessão.

prefetch_count
int

O número máximo de mensagens a colocar em cache com cada pedido ao serviço. Esta definição destina-se apenas a otimização avançada do desempenho. Aumentar este valor melhorará o desempenho do débito de mensagens, mas aumentará a probabilidade de as mensagens expirarem enquanto forem colocadas em cache se não forem processadas com rapidez suficiente. O valor predefinido é 0, o que significa que as mensagens serão recebidas do serviço e processadas uma de cada vez. No caso de prefetch_count ser 0, ServiceBusReceiver.receive tentaria colocar em cache max_message_count (se for fornecido) no respetivo pedido ao serviço.

client_identifier
str

Um identificador baseado em cadeias para identificar exclusivamente a instância do recetor. O Service Bus irá associá-lo a algumas mensagens de erro para facilitar a correlação de erros. Se não for especificado, será gerado um ID exclusivo.

socket_timeout
float

O tempo em segundos que o socket subjacente na ligação deve aguardar ao enviar e receber dados antes de exceder o tempo limite. O valor predefinido é 0,2 para TransportType.Amqp e 1 para TransportType.AmqpOverWebsocket. Se estiverem a ocorrer erros de ligação devido ao tempo limite de escrita, poderá ser necessário transmitir um valor superior ao predefinido.

Tipo de retorno

Exemplos

Crie uma nova instância do ServiceBusReceiver a partir de 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

Obtenha o ServiceBusSender para a fila específica.

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

Parâmetros

queue_name
str
Necessário

O caminho da Fila específica do Service Bus à qual o cliente se liga.

client_identifier
str

Um identificador baseado em cadeias para identificar exclusivamente a instância do remetente. O Service Bus irá associá-lo a algumas mensagens de erro para facilitar a correlação de erros. Se não for especificado, será gerado um ID exclusivo.

socket_timeout
float

O tempo em segundos que o socket subjacente na ligação deve aguardar ao enviar e receber dados antes de exceder o tempo limite. O valor predefinido é 0,2 para TransportType.Amqp e 1 para TransportType.AmqpOverWebsocket. Se estiverem a ocorrer erros de ligação devido ao tempo limite de escrita, poderá ser necessário transmitir um valor maior do que o predefinido.

Devoluções

Um Remetente de fila.

Tipo de retorno

Exemplos

Crie uma nova instância do ServiceBusSender a partir de 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

Obtenha o ServiceBusReceiver para a subscrição específica no tópico.

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

Parâmetros

topic_name
str
Necessário

O nome do Tópico específico do Service Bus ao qual o cliente se liga.

subscription_name
str
Necessário

O nome da Subscrição específica do Service Bus no Tópico do Service Bus especificado.

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

Uma sessão específica a partir da qual receber. Tem de ser especificado para uma subscrição com sessão, caso contrário, tem de ser Nenhuma. Para receber mensagens da próxima sessão disponível, defina esta opção como ~azure.servicebus.NEXT_AVAILABLE_SESSION.

sub_queue
str ou ServiceBusSubQueue ou None

Se for especificado, a subconjunta a que este recetor se ligará. Isto inclui as filas DEAD_LETTER e TRANSFER_DEAD_LETTER, contém mensagens que não podem ser entregues a nenhum recetor ou mensagens que não podem ser processadas. A predefinição é Nenhuma, o que significa ligar à fila primária. Podem ser atribuídos valores de ServiceBusSubQueue enum ou valores de cadeia equivalentes "deadletter" e "transferdeadletter".

receive_mode
Union[ServiceBusReceiveMode, str]

O receive_mode com que mensagens serão obtidas da entidade. As duas opções são PEEK_LOCK e RECEIVE_AND_DELETE. As mensagens recebidas com PEEK_LOCK têm de ser resolvidas num determinado período de bloqueio antes de serem removidas da subscrição. As mensagens recebidas com RECEIVE_AND_DELETE serão imediatamente removidas da subscrição e não podem ser posteriormente rejeitadas ou novamente recebidas se o cliente não conseguir processar a mensagem. A receive_mode predefinida é PEEK_LOCK.

max_wait_time
Optional[float]

O tempo limite em segundos entre as mensagens recebidas após as quais o recetor deixará de receber automaticamente. O valor predefinido é Nenhum, o que significa que não há tempo limite. Se estiverem a ocorrer erros de ligação devido ao tempo limite de escrita, o valor de tempo limite da ligação poderá ter de ser ajustado. Veja o parâmetro opcional socket_timeout para obter mais detalhes.

auto_lock_renewer
Optional[AutoLockRenewer]

Pode ser fornecido um ~azure.servicebus.AutoLockRenewer para que as mensagens sejam registadas automaticamente no recibo. Se o recetor for um recetor de sessão, será aplicado à sessão.

prefetch_count
int

O número máximo de mensagens a colocar em cache com cada pedido ao serviço. Esta definição destina-se apenas à otimização avançada do desempenho. Aumentar este valor irá melhorar o desempenho do débito de mensagens, mas aumentará a probabilidade de as mensagens expirarem enquanto forem colocadas em cache se não forem processadas com rapidez suficiente. O valor predefinido é 0, o que significa que as mensagens serão recebidas do serviço e processadas uma de cada vez. No caso de prefetch_count ser 0, o ServiceBusReceiver.receive tentaria colocar em cache max_message_count (se for fornecido) no respetivo pedido ao serviço.

client_identifier
str

Um identificador baseado em cadeias para identificar exclusivamente a instância do recetor. O Service Bus irá associá-lo a algumas mensagens de erro para facilitar a correlação de erros. Se não for especificado, será gerado um ID exclusivo.

socket_timeout
float

O tempo em segundos que o socket subjacente na ligação deve aguardar ao enviar e receber dados antes de exceder o tempo limite. O valor predefinido é 0,2 para TransportType.Amqp e 1 para TransportType.AmqpOverWebsocket. Se estiverem a ocorrer erros de ligação devido ao tempo limite de escrita, poderá ser necessário transmitir um valor maior do que o predefinido.

Tipo de retorno

Exemplos

Crie uma nova instância do ServiceBusReceiver a partir do 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

Obtenha o ServiceBusSender para o tópico específico.

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

Parâmetros

topic_name
str
Necessário

O caminho do Tópico específico do Service Bus ao qual o cliente se liga.

client_identifier
str

Um identificador baseado em cadeias para identificar exclusivamente a instância do remetente. O Service Bus irá associá-lo a algumas mensagens de erro para facilitar a correlação de erros. Se não for especificado, será gerado um ID exclusivo.

socket_timeout
float

O tempo em segundos que o socket subjacente na ligação deve aguardar ao enviar e receber dados antes de exceder o tempo limite. O valor predefinido é 0,2 para TransportType.Amqp e 1 para TransportType.AmqpOverWebsocket. Se estiverem a ocorrer erros de ligação devido ao tempo limite de escrita, poderá ser necessário transmitir um valor maior do que o predefinido.

Devoluções

Um remetente de tópicos.

Tipo de retorno

Exemplos

Crie uma nova instância do ServiceBusSender a partir do 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)