Compartir a través de


ServiceBusSender Clase

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

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

Herencia
azure.servicebus.aio._base_handler_async.BaseHandler
ServiceBusSender
azure.servicebus._servicebus_sender.SenderMixin
ServiceBusSender

Constructor

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
Requerido

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

credential
AsyncTokenCredential 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 una cola específica de Service Bus a la que se conecta el cliente. Solo se puede proporcionar uno de queue_name o topic_name.

topic_name
str

La ruta de acceso del tema específico de Service Bus al que se conecta el cliente. Solo se puede proporcionar uno de queue_name o topic_name.

logging_enable
bool

Indica 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 de 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 claves siguientes también pueden estar presentes: "username", "password".

user_agent
str

Si se especifica, se agregará delante de la cadena del 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 al 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 sigan pendientes.

close

Cierre la conexión del controlador.

Si el controlador ya se ha cerrado, esta operación no hará nada. Se puede pasar una excepción opcional para indicar que el controlador se ha apagado debido a un error.

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 el servicio pueda 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 se bloquea hasta que se recibe la confirmación o se agota el tiempo de espera de 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 único lote.

cancel_scheduled_messages

Cancele uno o varios mensajes que se hayan programado previamente y que sigan pendientes.

async 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 hay 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


   async with servicebus_sender:
       await servicebus_sender.cancel_scheduled_messages(sequence_nums)

close

Cierre la conexión del controlador.

Si el controlador ya se ha cerrado, esta operación no hará nada. Se puede pasar una excepción opcional para indicar que el controlador se ha apagado debido a un error.

async 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.

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

Parámetros

max_size_in_bytes
int o None
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

ServiceBusMessageBatch (objeto)

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


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

schedule_messages

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

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]]]
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 hay tiempo de espera.

Devoluciones

Los números de secuencia de los mensajes puestos 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 enviará en el 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

Envía mensajes y se bloquea hasta que se recibe la confirmación o se agota el tiempo de espera de 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 ú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

message
Union[ServiceBusMessage, ServiceBusMessageBatch, AmqpAnnotatedMessage, List[Union[ServiceBusMessage, AmqpAnnotatedMessage]]]
Requerido

Mensaje de ServiceBus que se va a enviar.

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 hay tiempo de espera.

Tipo de valor devuelto

Excepciones

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

Ejemplos

Enviar mensaje.


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

Atributos

client_identifier

Obtenga el identificador de cliente de ServiceBusSender asociado a la instancia del remitente.

Tipo de valor devuelto

str