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

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

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

時間指定のないトランザクション呼び出し

時間指定のない呼び出しトランザクションのオペレーション シーケンス
図 1: 時間指定なしの呼び出しトランザクション

リクエスト アクションを呼び出す

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

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

  • 呼び出しリクエスト: クラスタ コマンドへのパスのリストと、コマンド フィールドという名前のコマンドのオプション引数。
  • 時間指定リクエスト: このアクションが時間指定呼び出しトランザクションの一部かどうかを示すフラグ。
  • Suppress Response: レスポンス呼び出しアクションを抑制するかどうかを示すフラグ。
  • インタラクション ID: リクエスト呼び出しアクションとレスポンス呼び出しアクションを一致させるために使用される整数。

レスポンス アクションを呼び出す

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

ターゲットは、Invoke Request Action を受け取ると、次の内容を含む Invoke Response Action を使用してトランザクションを確定させます。

  • 呼び出しレスポンス: 送信されたすべての呼び出しリクエストに対するコマンド レスポンスまたはステータスのリスト。
  • インタラクション ID: レスポンス呼び出しアクションとリクエスト呼び出しアクションを一致させるために使用される整数。

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

Invoke Request Action はグループキャストの可能性がありますが、この場合は [Suppress Response] フラグを設定する必要があります。その理由は、そうしないと、グループのすべてのメンバーからの同時レスポンスによって、ネットワークがフラッディングされる可能性があります。

この動作を有効にするには、呼び出しリクエスト リストで使用されるパスにグループを含めることができます。また、ワイルドカードを含めることもできますが、これは Endpoint フィールドでのみ可能です。また、アクションがグループキャストの場合、このトランザクションはレスポンスなしで終了します。

時間指定呼び出しトランザクション

時間指定書き込みトランザクションと同様に、時間指定呼び出しトランザクションも時間指定リクエスト アクションから開始します。

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

時間指定リクエスト アクション

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

イニシエータは、以下を含むこのアクションを送信するトランザクションを開始します。

  • タイムアウト: このトランザクションがオープン状態を維持できる時間(ミリ秒)。この期間中、イニシエータが次に送信したアクションが有効とみなされます。

時間指定リクエスト アクションを受け取ったら、ターゲットはステータス レスポンス アクションで時間指定リクエスト アクションの確認応答を行う必要があります。イニシエータはエラーを報告していないステータス レスポンス アクションを受信したら、Invoke Request Action を送信します。

リクエスト アクションを呼び出す

前述のリクエスト アクションを呼び出すと同じです。

レスポンス アクションを呼び出す

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

時間指定呼び出し制限

すべての呼び出しコマンドは、Timed Interaction で呼び出すことができます。時間指定リクエスト アクション、呼び出しリクエスト アクション、呼び出しレスポンス アクションは Unicast のみであるため、時間指定呼び出しトランザクションのグループキャストとしては使用できません。

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