ServiceBusSession 類別
ServiceBusSession 用於管理會話狀態和鎖定更新。
請使用 ServiceBusReceiver 上的 屬性 session
,取得與接收者連結的對應 ServiceBusSession 物件,而不是直接具現化 ServiceBusSession 物件。
- 繼承
-
azure.servicebus._servicebus_session.BaseSessionServiceBusSession
建構函式
ServiceBusSession(session_id: str, receiver: ServiceBusReceiver | ServiceBusReceiverAsync)
參數
- session_id
- receiver
範例
從接收者取得會話
with servicebus_client.get_queue_receiver(queue_name=queue_name, session_id=session_id) as receiver:
session = receiver.session
變數
- auto_renew_error
- <xref:azure.servicebus.AutoLockRenewTimeout> 或 <xref:azure.servicebus.AutoLockRenewFailed>
使用 AutoLockRenewer 且無法更新會話鎖定時發生錯誤。
方法
get_state |
取得會話狀態。 如果未設定任何狀態,則會傳回 None。 |
renew_lock |
更新會話鎖定。 必須定期執行這項作業,才能保留會話的鎖定以繼續處理訊息。 鎖定遺失之後,連線將會關閉;無法更新過期的鎖定。 此作業也可以藉由向 azure.servicebus.AutoLockRenewer 實例註冊會話,以作為執行緒背景工作來執行。 |
set_state |
設定會話狀態。 |
get_state
取得會話狀態。
如果未設定任何狀態,則會傳回 None。
get_state(*, timeout: float | None = None, **kwargs: Any) -> bytes
參數
- timeout
- float
作業逾時總計,以秒為單位,包括所有重試。 如果指定,此值必須大於 0。 預設值為 None,表示沒有逾時。
傳回
會話狀態。
傳回類型
範例
取得會話狀態
with servicebus_client.get_queue_receiver(queue_name=queue_name, session_id=session_id) as receiver:
session = receiver.session
session_state = session.get_state()
renew_lock
更新會話鎖定。
必須定期執行這項作業,才能保留會話的鎖定以繼續處理訊息。
鎖定遺失之後,連線將會關閉;無法更新過期的鎖定。
此作業也可以藉由向 azure.servicebus.AutoLockRenewer 實例註冊會話,以作為執行緒背景工作來執行。
renew_lock(*, timeout: float | None = None, **kwargs: Any) -> datetime
參數
- timeout
- float
作業逾時總計,以秒為單位,包括所有重試。 如果指定,此值必須大於 0。 預設值為 None,表示沒有逾時。
傳回
鎖定設定為到期的 utc 日期時間。
傳回類型
範例
在會話鎖定到期之前更新會話鎖定
with servicebus_client.get_queue_receiver(queue_name=queue_name, session_id=session_id) as receiver:
session = receiver.session
session.renew_lock()
set_state
設定會話狀態。
set_state(state: str | bytes | bytearray | None, *, timeout: float | None = None, **kwargs: Any) -> None
參數
- timeout
- float
作業逾時總計,以秒為單位,包括所有重試。 如果指定,此值必須大於 0。 預設值為 None,表示沒有逾時。
傳回
無
傳回類型
範例
設定會話狀態
with servicebus_client.get_queue_receiver(queue_name=queue_name, session_id=session_id) as receiver:
session = receiver.session
session.set_state("START")