Compartilhar via


ServiceBusSender Classe

A classe ServiceBusSender define uma interface de alto nível para enviar mensagens para o Barramento de Serviço do Azure Queue ou Topic.

Use o método de ~azure.servicebus.ServiceBusClient get_<queue/topic>_sender para criar uma instância do ServiceBusSender.

Herança
azure.servicebus._base_handler.BaseHandler
ServiceBusSender
azure.servicebus._servicebus_sender.SenderMixin
ServiceBusSender

Construtor

ServiceBusSender(fully_qualified_namespace: str, credential: TokenCredential | AzureSasCredential | AzureNamedKeyCredential, *, queue_name: str | None = None, topic_name: str | None = None, **kwargs: Any)

Parâmetros

fully_qualified_namespace
str
Obrigatório

O nome do host totalmente qualificado para o namespace do Barramento de Serviço. O formato do namespace é: .servicebus.windows.net.

credential
TokenCredential ou AzureSasCredential ou AzureNamedKeyCredential
Obrigatório

O objeto de credencial usado para autenticação que implementa uma interface específica para obter tokens. Ele aceita objetos de credencial gerados pela biblioteca de identidade do azure e objetos que implementam o método *get_token(self, scopes) ou, como alternativa, um AzureSasCredential também pode ser fornecido.

queue_name
str

O caminho da fila específica do Barramento de Serviço ao qual o cliente se conecta.

topic_name
str

O caminho do Tópico do Barramento de Serviço específico ao qual o cliente se conecta.

logging_enable
bool

Se os logs de rastreamento de rede devem ser gerados para o agente. O padrão é False.

transport_type
TransportType

O tipo de protocolo de transporte que será usado para se comunicar com o serviço do Barramento de Serviço. O padrão é TransportType.Amqp.

http_proxy
Dict

Configurações de proxy HTTP. Deve ser um dicionário com as seguintes chaves: 'proxy_hostname' (valor str) e 'proxy_port' (valor int). Além disso, as seguintes chaves também podem estar presentes: 'username', 'password'.

user_agent
str

Se especificado, isso será adicionado na frente da cadeia de caracteres interna do agente do usuário.

client_identifier
str

Um identificador baseado em cadeia de caracteres para identificar exclusivamente a instância do cliente. O Barramento de Serviço o associará a algumas mensagens de erro para facilitar a correlação de erros. Se não for especificado, uma ID exclusiva será gerada.

socket_timeout
float

O tempo em segundos que o soquete subjacente na conexão deve aguardar ao enviar e receber dados antes de atingir o tempo limite. O valor padrão é 0,2 para TransportType.Amqp e 1 para TransportType.AmqpOverWebsocket. Se erros de conexão estiverem ocorrendo devido ao tempo limite de gravação, talvez seja necessário passar um valor maior que o padrão.

Variáveis

fully_qualified_namespace
str

O nome do host totalmente qualificado para o namespace do Barramento de Serviço. O formato do namespace é: .servicebus.windows.net.

entity_name
str

O nome da entidade à qual o cliente se conecta.

Métodos

cancel_scheduled_messages

Cancele uma ou mais mensagens que foram agendadas anteriormente e ainda estão pendentes.

close

Feche os links do manipulador (e a conexão se o manipulador usar uma conexão separada).

Se o manipulador já tiver sido fechado, essa operação não fará nada.

create_message_batch

Crie um objeto ServiceBusMessageBatch com o tamanho máximo de todo o conteúdo restrito por max_size_in_bytes. O max_size não deve ser maior que o tamanho máximo permitido da mensagem definido pelo serviço.

schedule_messages

Enviar Mensagem ou várias Mensagens a serem enfileiradas em um momento específico. Retorna uma lista dos números de sequência das mensagens enfileiradas.

send_messages

Envia mensagens e bloqueia até que a confirmação seja recebida ou a operação atinge o tempo limite.

Se uma lista de mensagens tiver sido fornecida, tentará enviá-las como um único lote, lançando um ValueError se elas não puderem caber em um único lote.

cancel_scheduled_messages

Cancele uma ou mais mensagens que foram agendadas anteriormente e ainda estão pendentes.

cancel_scheduled_messages(sequence_numbers: int | List[int], *, timeout: float | None = None, **kwargs: Any) -> None

Parâmetros

sequence_numbers
int ou list[int]
Obrigatório

Os números de sequência das mensagens agendadas.

timeout
float

O tempo limite total da operação em segundos, incluindo todas as tentativas. O valor deve ser maior que 0 se especificado. O valor padrão é None, o que significa que não há tempo limite.

Tipo de retorno

Exceções

azure.servicebus.exceptions.ServiceBusError if messages cancellation failed due to message alreadycancelled or enqueued.

Exemplos

Cancelando mensagens agendadas para serem enviadas no futuro


   with servicebus_sender:
       servicebus_sender.cancel_scheduled_messages(sequence_nums)

close

Feche os links do manipulador (e a conexão se o manipulador usar uma conexão separada).

Se o manipulador já tiver sido fechado, essa operação não fará nada.

close() -> None

Tipo de retorno

Exceções

azure.servicebus.exceptions.ServiceBusError if messages cancellation failed due to message alreadycancelled or enqueued.

create_message_batch

Crie um objeto ServiceBusMessageBatch com o tamanho máximo de todo o conteúdo restrito por max_size_in_bytes. O max_size não deve ser maior que o tamanho máximo permitido da mensagem definido pelo serviço.

create_message_batch(max_size_in_bytes: int | None = None) -> ServiceBusMessageBatch

Parâmetros

max_size_in_bytes
Optional[int]
valor padrão: None

O tamanho máximo dos dados de bytes que um objeto ServiceBusMessageBatch pode conter. Por padrão, o valor é determinado pela camada do Barramento de Serviço.

Retornos

Um objeto ServiceBusMessageBatch

Tipo de retorno

Exceções

azure.servicebus.exceptions.ServiceBusError if messages cancellation failed due to message alreadycancelled or enqueued.

Exemplos

Criar objeto ServiceBusMessageBatch dentro do tamanho limitado


   with servicebus_sender:
       batch_message = servicebus_sender.create_message_batch()
       batch_message.add_message(ServiceBusMessage("Single message inside batch"))

schedule_messages

Enviar Mensagem ou várias Mensagens a serem enfileiradas em um momento específico. Retorna uma lista dos números de sequência das mensagens enfileiradas.

schedule_messages(messages: MessageTypes, schedule_time_utc: datetime, *, timeout: float | None = None, **kwargs: Any) -> List[int]

Parâmetros

messages
Union[ServiceBusMessage, AmqpAnnotatedMessage, List[Union[ServiceBusMessage, AmqpAnnotatedMessage]]]
Obrigatório

A mensagem ou lista de mensagens a serem agendadas.

schedule_time_utc
datetime
Obrigatório

A data e a hora utc para enfileirar as mensagens.

timeout
float

O tempo limite total da operação em segundos, incluindo todas as tentativas. O valor deve ser maior que 0 se especificado. O valor padrão é None, o que significa que não há tempo limite.

Retornos

Uma lista dos números de sequência das mensagens enfileiradas.

Tipo de retorno

Exceções

azure.servicebus.exceptions.ServiceBusError if messages cancellation failed due to message alreadycancelled or enqueued.

Exemplos

Agendar uma mensagem a ser enviada no futuro


   with servicebus_sender:
       scheduled_time_utc = datetime.datetime.utcnow() + datetime.timedelta(seconds=30)
       scheduled_messages = [ServiceBusMessage("Scheduled message") for _ in range(10)]
       sequence_nums = servicebus_sender.schedule_messages(scheduled_messages, scheduled_time_utc)

send_messages

Envia mensagens e bloqueia até que a confirmação seja recebida ou a operação atinge o tempo limite.

Se uma lista de mensagens tiver sido fornecida, tentará enviá-las como um único lote, lançando um ValueError se elas não puderem caber em um único lote.

send_messages(message: MessageTypes | ServiceBusMessageBatch, *, timeout: float | None = None, **kwargs: Any) -> None

Parâmetros

message
Union[ServiceBusMessage, ServiceBusMessageBatch, AmqpAnnotatedMessage, List[Union[ServiceBusMessage, AmqpAnnotatedMessage]]]
Obrigatório

A mensagem ServiceBus a ser enviada.

timeout
Optional[float]

O tempo limite total da operação em segundos, incluindo todas as tentativas. O valor deve ser maior que 0 se especificado. O valor padrão é None, o que significa que não há tempo limite.

Tipo de retorno

Exceções

azure.servicebus.exceptions.OperationTimeoutError if sending times out.

Exemplos

Enviar mensagem.


   with servicebus_sender:
       message_send = ServiceBusMessage("Hello World")
       servicebus_sender.send_messages(message_send)

Atributos

client_identifier

Obtenha o client_identifier ServiceBusSender associado à instância do remetente.

Tipo de retorno

str