Freigeben über


ServiceBusSender Klasse

Die ServiceBusSender-Klasse definiert eine allgemeine Schnittstelle zum Senden von Nachrichten an die Azure Service Bus Queue oder Topic.

Verwenden Sie die get_<queue/topic>_sender -Methode von ~azure.servicebus.aio.ServiceBusClient, um einen ServiceBusSender-instance zu erstellen.

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

Konstruktor

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

Parameter

fully_qualified_namespace
str
Erforderlich

Der vollqualifizierte Hostname für den Service Bus-Namespace. Das Namespaceformat ist . servicebus.windows.net.

credential
AsyncTokenCredential oder AzureSasCredential oder AzureNamedKeyCredential
Erforderlich

Das für die Authentifizierung verwendete Anmeldeinformationsobjekt, das eine bestimmte Schnittstelle zum Abrufen von Token implementiert. Es akzeptiert Anmeldeinformationsobjekte, die von der azure-identity-Bibliothek generiert werden, und Objekte, die die *get_token(self, scopes) -Methode implementieren, oder alternativ kann auch ein AzureSasCredential-Objekt bereitgestellt werden.

queue_name
str

Der Pfad einer bestimmten Service Bus-Warteschlange, mit der der Client eine Verbindung herstellt. Es kann nur eine der queue_name oder topic_name bereitgestellt werden.

topic_name
str

Der Pfad eines bestimmten Service Bus-Themas, mit dem der Client eine Verbindung herstellt. Es kann nur eine der queue_name oder topic_name bereitgestellt werden.

logging_enable
bool

Gibt an, ob Netzwerkablaufverfolgungsprotokolle an die Protokollierung ausgegeben werden sollen. Der Standardwert ist False.

transport_type
TransportType

Der Typ des Transportprotokolls, das für die Kommunikation mit dem Service Bus-Dienst verwendet wird. Der Standardwert ist TransportType.Amqp.

http_proxy
Dict

HTTP-Proxyeinstellungen. Dies muss ein Wörterbuch mit den folgenden Schlüsseln sein: "proxy_hostname" (str-Wert) und "proxy_port" (int-Wert). Darüber hinaus können auch die folgenden Schlüssel vorhanden sein: "Benutzername", "Kennwort".

user_agent
str

Wenn angegeben, wird dies vor der integrierten Benutzer-Agent-Zeichenfolge hinzugefügt.

client_identifier
str

Ein Zeichenfolgenbasierter Bezeichner zur eindeutigen Identifizierung des Clients instance. Service Bus ordnet sie einigen Fehlermeldungen zu, um die Korrelation von Fehlern zu vereinfachen. Wenn nicht angegeben, wird eine eindeutige ID generiert.

socket_timeout
float

Die Zeit in Sekunden, die der zugrunde liegende Socket für die Verbindung beim Senden und Empfangen von Daten warten soll, bevor ein Timeout auftritt. Der Standardwert ist 0,2 für TransportType.Amqp und 1 für TransportType.AmqpOverWebsocket. Wenn Verbindungsfehler aufgrund eines Schreibzeitlimits auftreten, muss möglicherweise ein größer als der Standardwert übergeben werden.

Variablen

fully_qualified_namespace
str

Der vollqualifizierte Hostname für den Service Bus-Namespace. Das Namespaceformat ist . servicebus.windows.net.

entity_name
str

Der Name der Entität, mit der der Client eine Verbindung herstellt.

Methoden

cancel_scheduled_messages

Abbrechen einer oder mehrerer Nachrichten, die zuvor geplant wurden und noch ausstehen.

close

Schließen Sie die Handlerverbindung.

Wenn der Handler bereits geschlossen wurde, führt dieser Vorgang nichts aus. Eine optionale Ausnahme kann übergeben werden, um anzugeben, dass der Handler aufgrund eines Fehlers heruntergefahren wurde.

create_message_batch

Erstellen Sie ein ServiceBusMessageBatch-Objekt mit der maximalen Größe aller Inhalte, die durch max_size_in_bytes eingeschränkt werden. Die max_size sollte nicht größer als die vom Dienst definierte maximal zulässige Nachrichtengröße sein.

schedule_messages

Senden Sie eine Nachricht oder mehrere Nachrichten, die zu einem bestimmten Zeitpunkt vom Dienst in die Warteschlange eingereiht werden sollen. Gibt eine Liste der Sequenznummern der in die Warteschlange eingereihten Nachrichten zurück.

send_messages

Sendet Eine Nachricht und blockiert, bis die Bestätigung empfangen wird oder ein Timeout des Vorgangs auftritt.

Wenn eine Liste von Nachrichten bereitgestellt wurde, versucht, sie als einzelner Batch zu senden, wodurch ein ValueError ausgelöst wird, wenn sie nicht in einen einzelnen Batch passen.

cancel_scheduled_messages

Abbrechen einer oder mehrerer Nachrichten, die zuvor geplant wurden und noch ausstehen.

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

Parameter

sequence_numbers
int oder list[int]
Erforderlich

Die Sequenznummern der geplanten Nachrichten.

timeout
float

Das Gesamtzeitlimit des Vorgangs in Sekunden, einschließlich aller Wiederholungen. Der Wert muss größer als 0 sein, wenn er angegeben wird. Der Standardwert ist None, d. h. kein Timeout.

Rückgabetyp

Ausnahmen

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

Beispiele

Abbruch von Nachrichten, die in Zukunft gesendet werden sollen


   async with servicebus_sender:
       await servicebus_sender.cancel_scheduled_messages(sequence_nums)

close

Schließen Sie die Handlerverbindung.

Wenn der Handler bereits geschlossen wurde, führt dieser Vorgang nichts aus. Eine optionale Ausnahme kann übergeben werden, um anzugeben, dass der Handler aufgrund eines Fehlers heruntergefahren wurde.

async close() -> None

Rückgabetyp

Ausnahmen

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

create_message_batch

Erstellen Sie ein ServiceBusMessageBatch-Objekt mit der maximalen Größe aller Inhalte, die durch max_size_in_bytes eingeschränkt werden. Die max_size sollte nicht größer als die vom Dienst definierte maximal zulässige Nachrichtengröße sein.

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

Parameter

max_size_in_bytes
int oder None
Standardwert: None

Die maximale Größe der Bytedaten, die ein ServiceBusMessageBatch-Objekt enthalten kann. Standardmäßig wird der Wert von Ihrem Service Bus-Tarif bestimmt.

Gibt zurück

ServiceBusMessageBatch-Objekt

Rückgabetyp

Ausnahmen

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

Beispiele

Erstellen eines ServiceBusMessageBatch-Objekts in begrenzter Größe


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

schedule_messages

Senden Sie eine Nachricht oder mehrere Nachrichten, die zu einem bestimmten Zeitpunkt vom Dienst in die Warteschlange eingereiht werden sollen. Gibt eine Liste der Sequenznummern der in die Warteschlange eingereihten Nachrichten zurück.

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]

Parameter

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

Die Nachricht oder Liste der zu planenden Nachrichten.

schedule_time_utc
datetime
Erforderlich

Das Utc-Datum und die Uhrzeit, um die Nachrichten in die Warteschlange zu quetieren.

timeout
float

Das Gesamtzeitlimit des Vorgangs in Sekunden, einschließlich aller Wiederholungen. Der Wert muss größer als 0 sein, wenn er angegeben wird. Der Standardwert ist None, d. h. kein Timeout.

Gibt zurück

Die Sequenznummern der in die Warteschlange eingereihten Nachrichten.

Rückgabetyp

Ausnahmen

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

Beispiele

Planen einer Nachricht, die in Zukunft gesendet werden soll


   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

Sendet Eine Nachricht und blockiert, bis die Bestätigung empfangen wird oder ein Timeout des Vorgangs auftritt.

Wenn eine Liste von Nachrichten bereitgestellt wurde, versucht, sie als einzelner Batch zu senden, wodurch ein ValueError ausgelöst wird, wenn sie nicht in einen einzelnen Batch passen.

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

Parameter

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

Die zu sendende ServiceBus-Nachricht.

timeout
Optional[float]

Das Gesamtzeitlimit des Vorgangs in Sekunden, einschließlich aller Wiederholungen. Der Wert muss größer als 0 sein, wenn er angegeben wird. Der Standardwert ist None, d. h. kein Timeout.

Rückgabetyp

Ausnahmen

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

Beispiele

Nachricht senden.


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

Attribute

client_identifier

Rufen Sie den ServiceBusSender-Clientbezeichner ab, der dem Absender instance zugeordnet ist.

Rückgabetyp

str