Поделиться через


ServiceBusSender Класс

Класс ServiceBusSender определяет высокоуровневый интерфейс для отправки сообщений в очередь или раздел Служебная шина Azure.

Чтобы создать экземпляр ServiceBusSender, get_<queue/topic>_sender используйте метод ~azure.servicebus.aio.ServiceBusClient.

Наследование
azure.servicebus.aio._base_handler_async.BaseHandler
ServiceBusSender
azure.servicebus._servicebus_sender.SenderMixin
ServiceBusSender

Конструктор

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

Параметры

fully_qualified_namespace
str
Обязательно

Полное имя узла для пространства имен служебной шины. Формат пространства имен: .servicebus.windows.net.

credential
AsyncTokenCredential или AzureSasCredential или AzureNamedKeyCredential
Обязательно

Объект учетных данных, используемый для проверки подлинности, который реализует определенный интерфейс для получения маркеров. Он принимает объекты учетных данных, созданные библиотекой azure-identity, и объекты, реализующие метод *get_token(self, scopes) или также можно предоставить AzureSasCredential.

queue_name
str

Путь к определенной очереди служебной шины, к которому подключается клиент. Можно указать только один из queue_name или topic_name.

topic_name
str

Путь к определенному разделу служебной шины, к которому подключается клиент. Можно указать только один из queue_name или topic_name.

logging_enable
bool

Следует ли выводить журналы трассировки сети в средство ведения журнала. Значение по умолчанию — False.

transport_type
TransportType

Тип транспортного протокола, который будет использоваться для взаимодействия со службой служебной шины. Значение по умолчанию — TransportType.Amqp.

http_proxy
Dict

Параметры прокси-сервера HTTP. Это должен быть словарь со следующими ключами: "proxy_hostname" (значение str) и "proxy_port" (значение int). Кроме того, могут присутствовать следующие ключи: "имя пользователя", "пароль".

user_agent
str

Если этот параметр указан, он будет добавлен перед строкой встроенного агента пользователя.

client_identifier
str

Строковый идентификатор для уникальной идентификации экземпляра клиента. Служебная шина связывает ее с некоторыми сообщениями об ошибках, чтобы упростить корреляцию ошибок. Если значение не указано, будет создан уникальный идентификатор.

socket_timeout
float

Время в секундах, в течение времени ожидания базового сокета в подключении при отправке и получении данных до истечения времени ожидания. Значение по умолчанию — 0,2 для TransportType.Amqp и 1 для TransportType.AmqpOverWebsocket. Если возникают ошибки подключения из-за истечения времени ожидания записи, может потребоваться передать значение, превышающее значение по умолчанию.

Переменные

fully_qualified_namespace
str

Полное имя узла для пространства имен служебной шины. Формат пространства имен: .servicebus.windows.net.

entity_name
str

Имя сущности, к которому подключается клиент.

Методы

cancel_scheduled_messages

Отмена одного или нескольких сообщений, которые ранее были запланированы и по-прежнему находятся в состоянии ожидания.

close

Закройте подключение обработчика.

Если обработчик уже закрыт, эта операция не будет выполнять никаких действий. Можно передать необязательное исключение, указывающее, что обработчик был завершен из-за ошибки.

create_message_batch

Создайте объект ServiceBusMessageBatch с максимальным размером всего содержимого, ограниченного max_size_in_bytes. Max_size не должен превышать максимально допустимый размер сообщения, определенный службой.

schedule_messages

Отправка сообщения или нескольких сообщений, которые должны быть помещены в очередь в определенное время службой. Возвращает список порядковых номеров сообщений, помещенных в очередь.

send_messages

Отправляет сообщение и блокируется до получения подтверждения или истечения времени ожидания операции.

Если был предоставлен список сообщений, пытается отправить их как один пакет, вызывая valueError , если они не могут поместиться в одном пакете.

cancel_scheduled_messages

Отмена одного или нескольких сообщений, которые ранее были запланированы и по-прежнему находятся в состоянии ожидания.

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

Параметры

sequence_numbers
int или list[int]
Обязательно

Порядковые номера запланированных сообщений.

timeout
float

Общее время ожидания операции в секундах, включая все повторные попытки. Значение должно быть больше 0, если указано. Значение по умолчанию — None, что означает отсутствие времени ожидания.

Возвращаемый тип

Исключения

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

Примеры

Отмена сообщений, запланированных для отправки в будущем


   async with servicebus_sender:
       await servicebus_sender.cancel_scheduled_messages(sequence_nums)

close

Закройте подключение обработчика.

Если обработчик уже закрыт, эта операция не будет выполнять никаких действий. Можно передать необязательное исключение, указывающее, что обработчик был завершен из-за ошибки.

async close() -> None

Возвращаемый тип

Исключения

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

create_message_batch

Создайте объект ServiceBusMessageBatch с максимальным размером всего содержимого, ограниченного max_size_in_bytes. Max_size не должен превышать максимально допустимый размер сообщения, определенный службой.

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

Параметры

max_size_in_bytes
int или None
значение по умолчанию: None

Максимальный размер данных в байтах, которые может хранить объект ServiceBusMessageBatch. По умолчанию значение определяется уровнем служебной шины.

Возвращаемое значение

Объект ServiceBusMessageBatch

Возвращаемый тип

Исключения

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

Примеры

Создание объекта ServiceBusMessageBatch с ограниченным размером


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

schedule_messages

Отправка сообщения или нескольких сообщений, которые должны быть помещены в очередь в определенное время службой. Возвращает список порядковых номеров сообщений, помещенных в очередь.

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]

Параметры

messages
Union[ServiceBusMessage, AmqpAnnotatedMessage, List[Union[ServiceBusMessage, AmqpAnnotatedMessage]]]
Обязательно

Сообщение или список сообщений для планирования.

schedule_time_utc
datetime
Обязательно

Дата и время постановки сообщений в очередь в формате UTC.

timeout
float

Общее время ожидания операции в секундах, включая все повторные попытки. Значение должно быть больше 0, если указано. Значение по умолчанию — None, что означает отсутствие времени ожидания.

Возвращаемое значение

Порядковые номера сообщений, помещенных в очередь.

Возвращаемый тип

Исключения

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

Примеры

Планирование отправки сообщения в будущем


   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

Отправляет сообщение и блокируется до получения подтверждения или истечения времени ожидания операции.

Если был предоставлен список сообщений, пытается отправить их как один пакет, вызывая valueError , если они не могут поместиться в одном пакете.

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

Параметры

message
Union[ServiceBusMessage, ServiceBusMessageBatch, AmqpAnnotatedMessage, List[Union[ServiceBusMessage, AmqpAnnotatedMessage]]]
Обязательно

Сообщение Служебной шины для отправки.

timeout
Optional[float]

Общее время ожидания операции в секундах, включая все повторные попытки. Значение должно быть больше 0, если указано. Значение по умолчанию — None, что означает отсутствие времени ожидания.

Возвращаемый тип

Исключения

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

Примеры

Отправить сообщение.


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

Атрибуты

client_identifier

Получите идентификатор клиента ServiceBusSender, связанный с экземпляром отправителя.

Возвращаемый тип

str