Condividi tramite


ServiceBusSender Classe

La classe ServiceBusSender definisce un'interfaccia di alto livello per l'invio di messaggi alla coda o all'argomento bus di servizio di Azure.

Usare il metodo ~azure.servicebus.ServiceBusClient per creare un'istanza get_<queue/topic>_sender di ServiceBusSender.

Ereditarietà
azure.servicebus._base_handler.BaseHandler
ServiceBusSender
azure.servicebus._servicebus_sender.SenderMixin
ServiceBusSender

Costruttore

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

Parametri

fully_qualified_namespace
str
Necessario

Nome host completo per lo spazio dei nomi del bus di servizio. Il formato dello spazio dei nomi è: .servicebus.windows.net.

credential
TokenCredential oppure AzureSasCredential oppure AzureNamedKeyCredential
Necessario

Oggetto credenziale usato per l'autenticazione che implementa un'interfaccia specifica per ottenere i token. Accetta oggetti credenziali generati dalla libreria e dagli oggetti azure-identity che implementano anche il metodo *get_token(self, ambiti) o in alternativa, è possibile specificare anche AzureSasCredential.

queue_name
str

Percorso di coda del bus di servizio specifico a cui si connette il client.

topic_name
str

Percorso di un argomento specifico del bus di servizio a cui si connette il client.

logging_enable
bool

Indica se restituire i log di traccia di rete al logger. L'impostazione predefinita è False.

transport_type
TransportType

Tipo di protocollo di trasporto che verrà usato per comunicare con il servizio bus di servizio. Il valore predefinito è TransportType.Amqp.

http_proxy
Dict

Impostazioni proxy HTTP. Deve essere un dizionario con le chiavi seguenti: 'proxy_hostname' (valore str) e 'proxy_port' (valore int). Inoltre, le chiavi seguenti possono essere presenti: 'username', 'password'.

user_agent
str

Se specificato, verrà aggiunto davanti alla stringa dell'agente utente predefinita.

client_identifier
str

Identificatore basato su stringa per identificare in modo univoco l'istanza client. Il bus di servizio lo associa ad alcuni messaggi di errore per semplificare la correlazione degli errori. Se non specificato, verrà generato un ID univoco.

socket_timeout
float

Tempo in secondi in cui il socket sottostante sulla connessione deve attendere quando si inviano e ricevono dati prima del timeout. Il valore predefinito è 0.2 per TransportType.Amqp e 1 per TransportType.AmqpOverWebsocket. Se si verificano errori di connessione a causa del timeout di scrittura, potrebbe essere necessario passare un valore maggiore di quello predefinito.

Variabili

fully_qualified_namespace
str

Nome host completo per lo spazio dei nomi del bus di servizio. Il formato dello spazio dei nomi è: .servicebus.windows.net.

entity_name
str

Nome dell'entità a cui si connette il client.

Metodi

cancel_scheduled_messages

Annullare uno o più messaggi pianificati in precedenza e ancora in sospeso.

close

Chiudere i collegamenti del gestore e la connessione se il gestore usa una connessione separata.

Se il gestore è già chiuso, questa operazione non farà nulla.

create_message_batch

Creare un oggetto ServiceBusMessageBatch con dimensioni massime di tutti i contenuti vincolati da max_size_in_bytes. Il max_size deve essere diverso dalle dimensioni massime dei messaggi consentiti definiti dal servizio.

schedule_messages

Inviare messaggi o più messaggi da eseguire in un momento specifico. Restituisce un elenco dei numeri di sequenza dei messaggi accodati.

send_messages

Invia messaggi e blocchi fino al timeout dell'accettazione o dell'operazione.

Se è stato fornito un elenco di messaggi, tenta di inviarli come singolo batch, generando un ValoreError se non possono essere inseriti in un singolo batch.

cancel_scheduled_messages

Annullare uno o più messaggi pianificati in precedenza e ancora in sospeso.

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

Parametri

sequence_numbers
int oppure list[int]
Necessario

Numero di sequenza dei messaggi pianificati.

timeout
float

Il timeout totale dell'operazione in secondi, inclusi tutti i tentativi. Il valore deve essere maggiore di 0 se specificato. Il valore predefinito è Nessuno, ovvero nessun timeout.

Tipo restituito

Eccezioni

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

Esempio

Annullamento dei messaggi pianificati per l'invio in futuro


   with servicebus_sender:
       servicebus_sender.cancel_scheduled_messages(sequence_nums)

close

Chiudere i collegamenti del gestore e la connessione se il gestore usa una connessione separata.

Se il gestore è già chiuso, questa operazione non farà nulla.

close() -> None

Tipo restituito

Eccezioni

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

create_message_batch

Creare un oggetto ServiceBusMessageBatch con dimensioni massime di tutti i contenuti vincolati da max_size_in_bytes. Il max_size deve essere diverso dalle dimensioni massime dei messaggi consentiti definiti dal servizio.

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

Parametri

max_size_in_bytes
Optional[int]
valore predefinito: None

Dimensioni massime dei dati byte che un oggetto ServiceBusMessageBatch può contenere. Per impostazione predefinita, il valore è determinato dal livello del bus di servizio.

Restituisce

Oggetto ServiceBusMessageBatch

Tipo restituito

Eccezioni

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

Esempio

Creare un oggetto ServiceBusMessageBatch con dimensioni limitate


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

schedule_messages

Inviare messaggi o più messaggi da eseguire in un momento specifico. Restituisce un elenco dei numeri di sequenza dei messaggi accodati.

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

Parametri

messages
Union[ServiceBusMessage, AmqpAnnotatedMessage, List[Union[ServiceBusMessage, AmqpAnnotatedMessage]]]
Necessario

Messaggio o elenco di messaggi da pianificare.

schedule_time_utc
datetime
Necessario

Data e ora utc per eseguire la sequenza dei messaggi.

timeout
float

Il timeout totale dell'operazione in secondi, inclusi tutti i tentativi. Il valore deve essere maggiore di 0 se specificato. Il valore predefinito è Nessuno, ovvero nessun timeout.

Restituisce

Elenco dei numeri di sequenza dei messaggi accodati.

Tipo restituito

Eccezioni

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

Esempio

Pianificare l'invio di un messaggio in 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

Invia messaggi e blocchi fino al timeout dell'accettazione o dell'operazione.

Se è stato fornito un elenco di messaggi, tenta di inviarli come singolo batch, generando un ValoreError se non possono essere inseriti in un singolo batch.

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

Parametri

timeout
Optional[float]

Il timeout totale dell'operazione in secondi, inclusi tutti i tentativi. Il valore deve essere maggiore di 0 se specificato. Il valore predefinito è Nessuno, ovvero nessun timeout.

Tipo restituito

Eccezioni

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

Esempio

Invia messaggio.


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

Attributi

client_identifier

Ottenere il client_identifier ServiceBusSender associato all'istanza del mittente.

Tipo restituito

str