次の方法で共有


AutoLockRenewer クラス

バックグラウンド スレッド プールを使用してメッセージとセッションのロックを自動更新します。

バックグラウンド スレッド プールを使用してメッセージとセッションのロックを自動更新します。 AutoLockRenewer が複数のメッセージまたはセッションを同時に処理することが想定されている場合は、max_workerを大きな数に設定するか、大きなmax_workers数の ThreadPoolExecutor を渡すことをお勧めします。

継承
builtins.object
AutoLockRenewer

コンストラクター

AutoLockRenewer(max_lock_renewal_duration: float = 300, on_lock_renew_failure: LockRenewFailureCallback | None = None, executor: ThreadPoolExecutor | None = None, max_workers: int | None = None)

パラメーター

名前 説明
max_lock_renewal_duration

この更新者に登録されているロックを保持する必要がある時間 (秒単位)。 既定値は 300 (5 分) です。

規定値: 300
on_lock_renew_failure
Optional[<xref:LockRenewFailureCallback>]

登録されている再生可能なでロックが失われた場合に、コールバックを呼び出されるように指定できます。 既定値は None (コールバックなし) です。

規定値: None
executor

ユーザー指定のスレッド プール。 これを設定 max_workersと組み合わせることはできません。

規定値: None
max_workers

スレッド プール内の最大ワーカー数を指定します。 指定しない場合、使用される数は環境のコア数から派生します。 これは Executor と組み合わせることはできません。

規定値: None
max_lock_renewal_duration
必須

この更新者に登録されているロックを保持する必要がある時間 (秒単位)。 既定値は 300 (5 分) です。

on_lock_renew_failure
必須
Optional[<xref:LockRenewFailureCallback>]

登録されている再生可能なでロックが失われた場合に、コールバックを呼び出されるように指定できます。 既定値は None (コールバックなし) です。

executor
必須

ユーザー指定のスレッド プール。 これを設定 max_workersと組み合わせることはできません。

max_workers
必須

スレッド プール内の最大ワーカー数を指定します。 指定しない場合、使用される数は環境のコア数から派生します。 これは Executor と組み合わせることはできません。

メッセージ ロックを自動的に更新する


   from azure.servicebus import AutoLockRenewer

   lock_renewal = AutoLockRenewer(max_workers=4)
   with servicebus_receiver:
       for message in servicebus_receiver:
           # Auto renew message for 1 minute.
           lock_renewal.register(servicebus_receiver, message, max_lock_renewal_duration=60)
           process_message(message)
           servicebus_receiver.complete_message(message)

セッション ロックを自動的に更新する


       from azure.servicebus import AutoLockRenewer

       lock_renewal = AutoLockRenewer(max_workers=4)
       with servicebus_client.get_queue_receiver(queue_name=queue_name, session_id=session_id) as receiver:
           session = receiver.session
           # Auto renew session lock for 2 minutes
           lock_renewal.register(receiver, session, max_lock_renewal_duration=120)
           for message in receiver:
               process_message(message)
               receiver.complete_message(message)

メソッド

close

残りのロック更新スレッドをクリーンするには、スレッド プールをシャットダウンして自動再呼び出しを停止します。

register

更新可能なエンティティを登録して、ロックの自動更新を行います。

close

残りのロック更新スレッドをクリーンするには、スレッド プールをシャットダウンして自動再呼び出しを停止します。

close(wait: bool = True) -> None

パラメーター

名前 説明
wait

スレッド プールがシャットダウンするまでブロックするかどうか。 既定値は True です。

規定値: True

戻り値

説明

register

更新可能なエンティティを登録して、ロックの自動更新を行います。

register(receiver: ServiceBusReceiver, renewable: ServiceBusReceivedMessage | ServiceBusSession, max_lock_renewal_duration: float | None = None, on_lock_renew_failure: LockRenewFailureCallback | None = None) -> None

パラメーター

名前 説明
receiver
必須

メッセージまたは自動ロック更新されるセッションに関連付けられている ServiceBusReceiver インスタンス。

renewable
必須

更新する必要があるロックされたエンティティ。

max_lock_renewal_duration

ロックを維持する必要がある時間 (秒)。 既定値は [なし] です。 指定した場合、この値はコンストラクターで指定された既定値をオーバーライドします。

規定値: None
on_lock_renew_failure
Optional[<xref:LockRenewFailureCallback>]

登録されている再生可能なでロックが失われた場合に、コールバックを呼び出されるように指定できます。 既定値は None (コールバックなし) です。

規定値: None

戻り値

説明