Partilhar via


ServiceBusSender Classe

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

Utilize o método ~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
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.

queue_name
str

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

topic_name
str

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

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.

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.

client_identifier
str

Um identificador baseado em cadeias para identificar exclusivamente a instância de 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 superior ao 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 que ainda estejam pendentes.

close

Feche as ligações do processador (e a ligação se o processador utilizar uma ligação separada).

Se o processador já tiver fechado, esta operação não fará nada.

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 colocar em fila num momento específico. Devolve uma lista dos números de sequência das mensagens colocadas em fila.

send_messages

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

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

cancel_scheduled_messages

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

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 for especificado, o valor tem de ser maior do que 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


   with servicebus_sender:
       servicebus_sender.cancel_scheduled_messages(sequence_nums)

close

Feche as ligações do processador (e a ligação se o processador utilizar uma ligação separada).

Se o processador já tiver fechado, esta 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 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.

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

Parâmetros

max_size_in_bytes
Optional[int]
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

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 com um 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 colocar em fila num momento específico. Devolve uma lista dos números de sequência das mensagens colocadas em fila.

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]]]
Necessário

A mensagem ou lista de mensagens a agendar.

schedule_time_utc
datetime
Necessário

A data e hora utc para efetuar a fila das mensagens.

timeout
float

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

Devoluções

Uma lista dos 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 para 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 blocos até que a confirmação seja recebida ou a operação exceda o limite de tempo.

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

send_messages(message: MessageTypes | 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 for especificado, o valor tem de ser maior do que 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.


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

Atributos

client_identifier

Obtenha a client_identifier ServiceBusSender associada à instância do remetente.

Tipo de retorno

str