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

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

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

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

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

リクエスト アクションの呼び出し

方向: 開始者 -> ターゲット

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

  • 呼び出しリクエスト: クラスタ コマンドへのパスのリストと、コマンド フィールドという名前のコマンドのオプション引数。
  • Timed Request: このアクションが Timed Invoke トランザクションの一部であるかどうかを示すフラグ。
  • Suppress Response: Invoke Response アクションを抑制すべきかどうかを示すフラグ。
  • Interaction ID: 呼び出しリクエスト アクションと呼び出しレスポンス アクションの照合に使用される整数。

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

方向: ターゲット -> 開始者

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

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

時刻指定なしの呼び出し制限

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

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

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

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

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

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

方向: 開始者 -> ターゲット

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

  • Timeout: このトランザクションがオープン状態を維持できる時間(ミリ秒)。この間、開始者から送信された次のアクションは有効とみなされます。

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

リクエスト アクションの呼び出し

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

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

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

時間指定呼び出し制限

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

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