Compartir a través de


ServiceBusSender Clase

La clase ServiceBusSender define una interfaz de alto nivel para enviar mensajes a la cola o tema de Azure Service Bus.

Use el get_<queue/topic>_sender método ~azure.servicebus.ServiceBusClient para crear una instancia de ServiceBusSender.

Herencia
azure.servicebus._base_handler.BaseHandler
ServiceBusSender
azure.servicebus._servicebus_sender.SenderMixin
ServiceBusSender

Constructor

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
Requerido

Nombre de host completo para el espacio de nombres de Service Bus. El formato del espacio de nombres es: .servicebus.windows.net.

credential
TokenCredential o AzureSasCredential o AzureNamedKeyCredential
Requerido

Objeto de credencial usado para la autenticación que implementa una interfaz determinada para obtener tokens. Acepta objetos de credenciales generados por la biblioteca azure-identity y los objetos que implementan el método *get_token (self, scopes) o, como alternativa, también se puede proporcionar una instancia de AzureSasCredential.

queue_name
str

Ruta de acceso de la cola de Service Bus específica a la que se conecta el cliente.

topic_name
str

Ruta de acceso del tema específico de Service Bus al que se conecta el cliente.

logging_enable
bool

Si se van a generar registros de seguimiento de red en el registrador. El valor predeterminado es false.

transport_type
TransportType

Tipo de protocolo de transporte que se usará para comunicarse con el servicio Service Bus. El valor predeterminado es TransportType.Amqp.

http_proxy
Dict

Configuración del proxy HTTP. Debe ser un diccionario con las siguientes claves: "proxy_hostname" (valor str) y "proxy_port" (valor int). Además, las siguientes claves también pueden estar presentes: "username", "password".

user_agent
str

Si se especifica, se agregará delante de la cadena de agente de usuario integrada.

client_identifier
str

Identificador basado en cadenas para identificar de forma única la instancia de cliente. Service Bus lo asociará a algunos mensajes de error para facilitar la correlación de errores. Si no se especifica, se generará un identificador único.

socket_timeout
float

Tiempo en segundos que el socket subyacente de la conexión debe esperar al enviar y recibir datos antes de que se agote el tiempo de espera. El valor predeterminado es 0.2 para TransportType.Amqp y 1 para TransportType.AmqpOverWebsocket. Si se producen errores de conexión debido a un tiempo de espera de escritura, es posible que sea necesario pasar un valor mayor que el predeterminado.

Variables

fully_qualified_namespace
str

Nombre de host completo para el espacio de nombres de Service Bus. El formato del espacio de nombres es: .servicebus.windows.net.

entity_name
str

Nombre de la entidad a la que se conecta el cliente.

Métodos

cancel_scheduled_messages

Cancele uno o varios mensajes que se hayan programado previamente y que todavía están pendientes.

close

Cierre los vínculos del controlador (y la conexión si el controlador usa una conexión independiente).

Si el controlador ya se ha cerrado, esta operación no hará nada.

create_message_batch

Cree un objeto ServiceBusMessageBatch con el tamaño máximo de todo el contenido restringido por max_size_in_bytes. El max_size no debe ser mayor que el tamaño máximo permitido del mensaje definido por el servicio.

schedule_messages

Enviar mensaje o varios mensajes que se van a poner en cola en un momento específico. Devuelve una lista de los números de secuencia de los mensajes en cola.

send_messages

Envía mensajes y bloquea hasta que se agota el tiempo de espera de confirmación o la operación.

Si se proporcionó una lista de mensajes, intenta enviarlos como un solo lote, iniciando un valor ValueError si no caben en un solo lote.

cancel_scheduled_messages

Cancele uno o varios mensajes que se hayan programado previamente y que todavía están pendientes.

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

Parámetros

sequence_numbers
int o list[int]
Requerido

Los números de secuencia de los mensajes programados.

timeout
float

Tiempo de espera total de la operación en segundos, incluidos todos los reintentos. El valor debe ser mayor que 0 si se especifica. El valor predeterminado es None, lo que significa que no se ha agotado el tiempo de espera.

Tipo de valor devuelto

Excepciones

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

Ejemplos

Cancelación de mensajes programados para enviarse en el futuro


   with servicebus_sender:
       servicebus_sender.cancel_scheduled_messages(sequence_nums)

close

Cierre los vínculos del controlador (y la conexión si el controlador usa una conexión independiente).

Si el controlador ya se ha cerrado, esta operación no hará nada.

close() -> None

Tipo de valor devuelto

Excepciones

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

create_message_batch

Cree un objeto ServiceBusMessageBatch con el tamaño máximo de todo el contenido restringido por max_size_in_bytes. El max_size no debe ser mayor que el tamaño máximo permitido del mensaje definido por el servicio.

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

Parámetros

max_size_in_bytes
Optional[int]
valor predeterminado: None

Tamaño máximo de los datos de bytes que puede contener un objeto ServiceBusMessageBatch. De forma predeterminada, el valor viene determinado por el nivel de Service Bus.

Devoluciones

Un objeto ServiceBusMessageBatch

Tipo de valor devuelto

Excepciones

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

Ejemplos

Creación de un objeto ServiceBusMessageBatch con un tamaño limitado


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

schedule_messages

Enviar mensaje o varios mensajes que se van a poner en cola en un momento específico. Devuelve una lista de los números de secuencia de los mensajes en cola.

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]]]
Requerido

Mensaje o lista de mensajes que se van a programar.

schedule_time_utc
datetime
Requerido

Fecha y hora utc para poner en cola los mensajes.

timeout
float

Tiempo de espera total de la operación en segundos, incluidos todos los reintentos. El valor debe ser mayor que 0 si se especifica. El valor predeterminado es None, lo que significa que no se ha agotado el tiempo de espera.

Devoluciones

Lista de los números de secuencia de los mensajes en cola.

Tipo de valor devuelto

Excepciones

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

Ejemplos

Programar un mensaje que se va a enviar en el 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

Envía mensajes y bloquea hasta que se agota el tiempo de espera de confirmación o la operación.

Si se proporcionó una lista de mensajes, intenta enviarlos como un solo lote, iniciando un valor ValueError si no caben en un solo lote.

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

Parámetros

timeout
Optional[float]

Tiempo de espera total de la operación en segundos, incluidos todos los reintentos. El valor debe ser mayor que 0 si se especifica. El valor predeterminado es None, lo que significa que no se ha agotado el tiempo de espera.

Tipo de valor devuelto

Excepciones

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

Ejemplos

Enviar mensaje.


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

Atributos

client_identifier

Obtenga el client_identifier serviceBusSender asociado a la instancia del remitente.

Tipo de valor devuelto

str