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


ServiceBusSession Класс

ServiceBusSession используется для управления состояниями сеанса и возобновления блокировки.

Используйте свойство session ServiceBusReceiver, чтобы получить соответствующий объект ServiceBusSession, связанный с получателем, вместо непосредственного создания экземпляра объекта ServiceBusSession.

Наследование
azure.servicebus._servicebus_session.BaseSession
ServiceBusSession

Конструктор

ServiceBusSession(session_id: str, receiver: ServiceBusReceiver | ServiceBusReceiverAsync)

Параметры

session_id
receiver

Примеры

Получение сеанса от получателя


       async with servicebus_client.get_queue_receiver(queue_name=queue_name, session_id=session_id) as receiver:
           session = receiver.session

Методы

get_state

Получение состояния сеанса.

Возвращает значение None, если состояние не задано.

renew_lock

Обновите блокировку сеанса.

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

После потери блокировки подключение будет закрыто; Блокировка с истекшим сроком действия не может быть продлена.

Эту операцию также можно выполнить в виде потоковой фоновой задачи, зарегистрировав сеанс в экземпляре azure.servicebus.aio.AutoLockRenewer .

set_state

Задайте состояние сеанса.

get_state

Получение состояния сеанса.

Возвращает значение None, если состояние не задано.

async get_state(*, timeout: float | None = None, **kwargs: Any) -> bytes

Параметры

timeout
Optional[float]

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

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

Состояние сеанса.

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

Примеры

Получение состояния сеанса


       async with servicebus_client.get_queue_receiver(queue_name=queue_name, session_id=session_id) as receiver:
           session = receiver.session
           session_state = await session.get_state()

renew_lock

Обновите блокировку сеанса.

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

После потери блокировки подключение будет закрыто; Блокировка с истекшим сроком действия не может быть продлена.

Эту операцию также можно выполнить в виде потоковой фоновой задачи, зарегистрировав сеанс в экземпляре azure.servicebus.aio.AutoLockRenewer .

async renew_lock(*, timeout: float | None = None, **kwargs: Any) -> datetime

Параметры

timeout
Optional[float]

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

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

Дата и время в формате UTC, для которого установлен срок действия блокировки.

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

Примеры

Продление блокировки сеанса до истечения срока ее действия


       async with servicebus_client.get_queue_receiver(queue_name=queue_name, session_id=session_id) as receiver:
           session = receiver.session
           await session.renew_lock()

set_state

Задайте состояние сеанса.

async set_state(state: str | bytes | bytearray | None, *, timeout: float | None = None, **kwargs: Any) -> None

Параметры

state
str или bytes или bytearray или None
Обязательно

Значение состояния.

timeout
float или None

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

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

Ответ обратного вызова

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

any

Примеры

Установка состояния сеанса


       async with servicebus_client.get_queue_receiver(queue_name=queue_name, session_id=session_id) as receiver:
           session = receiver.session
           await session.set_state("START")

Атрибуты

locked_until_utc

Время истечения срока действия блокировки этого сеанса.

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

session_id

Идентификатор текущего сеанса.

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

str