Share via


ServiceBusSender Classe

A classe ServiceBusSender define uma interface de alto nível para enviar mensagens para a Fila ou Tópico Azure Service Bus.

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

Herança
azure.servicebus.aio._base_handler_async.BaseHandler
ServiceBusSender
azure.servicebus._servicebus_sender.SenderMixin
ServiceBusSender

Construtor

ServiceBusSender(fully_qualified_namespace: str, credential: AsyncTokenCredential | AzureSasCredential | AzureNamedKeyCredential, *, queue_name: str | None = None, topic_name: str | None = None, **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
AsyncTokenCredential 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.

queue_name
str

O caminho da fila específica do Service Bus à qual o cliente se liga. Só pode ser fornecido um dos queue_name ou topic_name.

topic_name
str

O caminho do Tópico específico do Service Bus ao qual o cliente se liga. Só pode ser fornecido um dos queue_name ou topic_name.

logging_enable
bool

Se pretende gerar 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.

http_proxy
Dict

Definições de proxy HTTP. Este tem de ser um dicionário com as seguintes chaves: "proxy_hostname" (valor de 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 especificado, este procedimento será adicionado à frente da cadeia de agente de utilizador incorporada.

client_identifier
str

Um identificador baseado em cadeias para identificar exclusivamente a instância do cliente. 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.

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.

entity_name
str

O nome da entidade à qual o cliente se liga.

Métodos

cancel_scheduled_messages

Cancele uma ou mais mensagens que tenham sido agendadas anteriormente e ainda estejam pendentes.

close

Feche a ligação do processador.

Se o processador já tiver fechado, esta operação não fará nada. Pode ser transmitida uma exceção opcional para indicar que o processador foi encerrado devido a um erro.

create_message_batch

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

schedule_messages

Enviar Mensagem ou várias Mensagens a serem colocadas em fila num momento específico pelo serviço. Devolve uma lista dos números de sequência das mensagens em fila.

send_messages

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

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

cancel_scheduled_messages

Cancele uma ou mais mensagens que tenham sido agendadas anteriormente e ainda estejam pendentes.

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

Parâmetros

sequence_numbers
int ou list[int]
Necessário

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

timeout
float

O tempo limite total da operação em segundos, incluindo todas as repetições. Se especificado, o valor tem de ser superior a 0. O valor predefinido é Nenhum, 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

Cancelar mensagens agendadas para serem enviadas no futuro


   async with servicebus_sender:
       await servicebus_sender.cancel_scheduled_messages(sequence_nums)

close

Feche a ligação do processador.

Se o processador já tiver fechado, esta operação não fará nada. Pode ser transmitida uma exceção opcional para indicar que o processador foi encerrado devido a um erro.

async 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 limitado por max_size_in_bytes. O max_size não deve ser maior do que o tamanho máximo de mensagens permitido definido pelo serviço.

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

Parâmetros

max_size_in_bytes
int ou None
valor predefinido: None

O tamanho máximo dos dados de bytes que um objeto ServiceBusMessageBatch pode conter. Por predefinição, o valor é determinado pelo escalão do Service Bus.

Devoluções

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 com um tamanho limitado


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

schedule_messages

Enviar Mensagem ou várias Mensagens a serem colocadas em fila num momento específico pelo serviço. Devolve uma lista dos números de sequência das mensagens em fila.

async schedule_messages(messages: Mapping[str, Any] | ServiceBusMessage | AmqpAnnotatedMessage | Iterable[Mapping[str, Any]] | Iterable[ServiceBusMessage] | Iterable[AmqpAnnotatedMessage], schedule_time_utc: datetime, *, timeout: float | None = None, **kwargs: Any) -> List[int]

Parâmetros

messages
Union[ServiceBusMessage, AmqpAnnotatedMessage, List[Union[ServiceBusMessage, AmqpAnnotatedMessage]]]
Necessário

A mensagem ou lista de mensagens a agendar.

schedule_time_utc
datetime
Necessário

A data e hora utc para colocar as mensagens em fila.

timeout
float

O tempo limite total da operação em segundos, incluindo todas as repetições. Se especificado, o valor tem de ser superior a 0. O valor predefinido é Nenhum, o que significa que não há tempo limite.

Devoluções

Os números de sequência das mensagens em fila.

Tipo de retorno

Exceções

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

Exemplos

Agendar uma mensagem a enviar no futuro


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

send_messages

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

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

async send_messages(message: Mapping[str, Any] | ServiceBusMessage | AmqpAnnotatedMessage | Iterable[Mapping[str, Any]] | Iterable[ServiceBusMessage] | Iterable[AmqpAnnotatedMessage] | ServiceBusMessageBatch, *, timeout: float | None = None, **kwargs: Any) -> None

Parâmetros

timeout
Optional[float]

O tempo limite total da operação em segundos, incluindo todas as repetições. Se especificado, o valor tem de ser superior a 0. O valor predefinido é Nenhum, 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.


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

Atributos

client_identifier

Obtenha o identificador de cliente ServiceBusSender associado à instância do remetente.

Tipo de retorno

str