你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

ServiceBusSession 类

ServiceBusSession 用于管理会话状态和锁定续订。

请使用 ServiceBusReceiver 上的 属性 session 获取与接收方链接的相应 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。 默认值为 None,表示无超时。

返回

会话状态。

返回类型

示例

获取会话状态


       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。 默认值为 None,表示无超时。

返回

锁定设置为过期的 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
strbytesbytearrayNone
必需

状态值。

timeout
floatNone

总操作超时时间(秒)包括所有重试次数。 如果指定,该值必须大于 0。 默认值为 None,表示无超时。

返回

回调的响应

返回类型

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

当前会话的会话 ID。

返回类型

str