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

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

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

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

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

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

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

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

  • 呼び出しリクエスト: クラスタ コマンドへのパスとコマンドのオプションの引数のリスト(コマンド フィールドといいます)。
  • 時間指定リクエスト: このアクションが時間指定呼び出しトランザクションの一部かどうかを示すフラグ。
  • Suppress Response: レスポンス呼び出しアクションを抑制する必要があるかどうかを示すフラグ。
  • Interaction ID: 呼び出しリクエスト アクションと呼び出しレスポンス アクションの照合に使用される整数。

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

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

ターゲットは、呼び出しリクエスト アクションを受信すると、以下を含む呼び出しレスポンス アクションでトランザクションを確定します。

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

タイミング指定のない呼び出しの制限

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

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

時間制限付きトランザクション

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

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

時間制限付きリクエスト アクション

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

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

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

時間指定リクエスト アクションを受信したら、ターゲットはステータス レスポンス アクションで時間指定リクエスト アクションを確認応答する必要があります。イニシエータは、エラーがないステータス レスポンス アクションを受信すると、呼び出しリクエスト アクションを送信します。

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

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

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

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

時間指定呼び出しの制限

すべての起動コマンドは、時間指定インタラクションで呼び出すことができます。時間制限付きリクエスト アクション、Invoke Request アクション、Invoke Response アクションは Unicast のみであるため、時間指定呼び出しトランザクションのグループキャストとしては使用できません。

呼び出しリクエスト アクションは、グループとワイルドカードによるパスの使用をサポートしていますが、レスポンス アクション呼び出しはワイルドカードの使用をサポートしていません。