クラス LockRequestHandlerAdvice

実装されているすべてのインターフェース:
AdviceInterceptorMethodInterceptorAwareBeanFactoryAwareBeanNameAwareInitializingBeanApplicationContextAwareComponentSourceAwareExpressionCapableNamedComponent

public class LockRequestHandlerAdvice extends AbstractRequestHandlerAdvice
AbstractRequestHandlerAdvice は、lockKey からのメッセージに基づいて AbstractReplyProducingMessageHandler.RequestHandler#handleRequestMessage(Message) 呼び出しへの排他的アクセスを保証します。

メッセージの lockKey が null の場合、呼び出しの周囲にロックはありません。ただし、setDiscardChannel(MessageChannel) が指定されている場合は、代わりにそこにメッセージが送信されます。

導入:
6.5
作成者:
Artem Bilan
  • コンストラクターの詳細

    • LockRequestHandlerAdvice

      public LockRequestHandlerAdvice(LockRegistry lockRegistry, ObjectSE lockKey)
      LockRegistry と固定 (共有) ロックキーに基づいてアドバイスインスタンスを構築します。
      パラメーター:
      lockRegistry - 使用する LockRegistry
      lockKey - すべての呼び出しの静的 (共有) ロックキー。
    • LockRequestHandlerAdvice

      public LockRequestHandlerAdvice(LockRegistry lockRegistry, Expression lockKeyExpression)
      リクエストメッセージに対するロックキーの LockRegistry および SpEL 式に基づいてアドバイスインスタンスを構築します。
      パラメーター:
      lockRegistry - 使用する LockRegistry
      lockKeyExpression - リクエストメッセージに対してロックキーを評価するための SpEL 式。
    • LockRequestHandlerAdvice

      public LockRequestHandlerAdvice(LockRegistry lockRegistry, FunctionSE<Message<?>, ObjectSE> lockKeyFunction)
      LockRegistry に基づいてアドバイスインスタンスを構築し、リクエストメッセージに対するロックキーの機能を実行します。
      パラメーター:
      lockRegistry - 使用する LockRegistry
      lockKeyFunction - リクエストメッセージに対してロックキーを評価する機能。
  • メソッドの詳細

    • setWaitLockDuration

      public void setWaitLockDuration(DurationSE waitLockDuration)
      Lock.tryLock(long, TimeUnit)SE API のオプションの期間。それ以外の場合は、Lock.lockInterruptibly() が使用されます。
      パラメーター:
      waitLockDuration - Lock.tryLock(long, TimeUnit)SE の期間。
    • setWaitLockDurationExpression

      public void setWaitLockDurationExpression(Expression waitLockDurationExpression)
      リクエストメッセージに対して Lock.tryLock(long, TimeUnit)SE 期間を評価するための SpEL 式。DurationSElong (ミリ秒単位)、ISO-8601 形式の期間文字列として評価できます。
      パラメーター:
      waitLockDurationExpression - 期間を表す SpEL 式。
    • setWaitLockDurationExpressionString

      public void setWaitLockDurationExpressionString(StringSE waitLockDurationExpression)
      リクエストメッセージに対して Lock.tryLock(long, TimeUnit)SE 期間を評価するための SpEL 式。DurationSElong (ミリ秒単位)、ISO-8601 形式の期間文字列として評価できます。
      パラメーター:
      waitLockDurationExpression - 期間を表す SpEL 式。
    • setWaitLockDurationFunction

      public void setWaitLockDurationFunction(FunctionSE<Message<?>, DurationSE> waitLockDurationFunction)
      リクエストメッセージに対して Lock.tryLock(long, TimeUnit)SE 期間を評価する関数。
      パラメーター:
      waitLockDurationFunction - 期間に関する関数。
    • setDiscardChannel

      public void setDiscardChannel(@Nullable MessageChannel discardChannel)
      lockKey が評価されるメッセージを null に送信するチャネルを設定します。このチャネルが設定されておらず、かつ lockKey == null の場合、呼び出しの前後でロックは行われません。
      パラメーター:
      discardChannel - キーなしでメッセージを送信するチャネル。
    • onInit

      protected void onInit()
      クラスからコピーされた説明: IntegrationObjectSupport
      サブクラスは、初期化ロジック用にこれを実装できます。
      オーバーライド:
      クラス IntegrationObjectSupportonInit 
    • doInvoke

      protected ObjectSE doInvoke(AbstractRequestHandlerAdvice.ExecutionCallback callback, ObjectSE target, Message<?> message)
      クラスからコピーされた説明: AbstractRequestHandlerAdvice
      サブクラスは、このメソッドを実装して、MessageHandler に動作を適用します。

      callback.execute() はハンドラーメソッドを呼び出し、その結果、null を返します。

      次で指定:
      クラス AbstractRequestHandlerAdvicedoInvoke 
      パラメーター:
      callback - サブクラスは、このインターフェースで execute() メソッドを呼び出して、ハンドラーメソッドを呼び出します。
      target - ターゲットハンドラー。
      message - ハンドラーに送信されるメッセージ。
      戻り値:
      MessageHandler を呼び出した後の結果。