トランザクションを呼び出す

Invoke Transactions は、ターゲット ノードで 1 つ以上のクラスタ コマンドを呼び出すために使用されます。これは、クラスタで定義されたコマンドに対して行われたリモート プロシージャ コールに似ています。

書き込みトランザクションと同様に、呼び出しトランザクションは時間指定トランザクションと時間指定なしトランザクションをサポートしています。タイムド トランザクションの詳細については、タイムド アクションとアンタイムド アクションのセクションをご覧ください。

Untimed Invoke Transaction

Untimed Invoke Transaction のオペレーションのシーケンス
図 1: 時間指定なしの Invoke Transaction

Invoke Request アクション

方向: イニシエータ -> ターゲット

読み取りリクエスト アクションや書き込みリクエスト アクションと同様に、このアクションでは、イニシエータがターゲットに次の情報を提供します。

  • Invoke Requests: クラスタ コマンドのパスのリストと、コマンドの省略可能な引数(コマンド フィールド)です。
  • Timed Request: このアクションが Timed Invoke Transaction の一部であるかどうかを示すフラグ。
  • レスポンスを抑制: Invoke Response Action を抑制するかどうかを示すフラグ。
  • インタラクション ID: Invoke Request Action を Invoke Response Action に照合するために使用される整数。

Invoke Response Action

方向: ターゲット -> イニシエータ

ターゲットは、呼び出しリクエスト アクションを受信すると、次の情報を伝達する呼び出しレスポンス アクションでトランザクションを完了します。

  • 呼び出しレスポンス: 送信されたすべての呼び出しリクエストのコマンド レスポンスまたはステータスのリスト。
  • Interaction ID: Invoke Response Action を Invoke Request Action に照合するために使用される整数。

時間制限のない呼び出しの制限

Invoke Request Action はグループキャストの場合もありますが、この場合は Suppress Response フラグを設定する必要があります。そうしないと、グループのすべてのメンバーからの同時応答でネットワークが溢れる可能性があるためです。

この動作を有効にするには、[Invoke Requests] リストで使用されるパスにグループを含めることができます。また、ワイルドカードを含めることもできますが、[Endpoint] フィールドのみです。また、Action が groupcast の場合、このトランザクションはレスポンスなしで終了します。

Timed Invoke Transactions

Timed Write Transactions と同様に、Timed Invoke Transactions も Timed Request Action で始まります。

Timed Invoke Transaction のオペレーションのシーケンス
図 2: 時間指定された呼び出しトランザクション

Timed Request Action

方向: イニシエータ -> ターゲット

イニシエータが、次の情報を含むアクションを送信してトランザクションを開始します。

  • タイムアウト: このトランザクションが開いたままになることができる時間(ミリ秒単位)。この期間中は、開始者から送信された次のアクションが有効と見なされます。

Timed Request Action を受信すると、Target は Status Response Action で Timed Request Action を確認する必要があります。イニシエータは、エラーがないことを報告するステータス レスポンス アクションを受信すると、呼び出しリクエスト アクションを送信します。

Invoke Request アクション

前に説明した Invoke Request Action と同じです。

Invoke Response Action

前述のレスポンス アクションの呼び出しと同じです。

Timed Invoke の制限

すべての呼び出しコマンドは、Timed Interaction で呼び出すことができます。Timed Request Action、Invoke Request Action、Invoke Response Action は Unicast 専用であるため、Timed Invoke Transaction でグループキャストとして使用することはできません。

Invoke Request アクションは、グループを含むパスとワイルドカードの使用をサポートしていますが、Invoke Response アクションはワイルドカードの使用をサポートしていません。