呼び出しトランザクションは、ターゲット ノードで 1 つ以上のクラスタ コマンドを呼び出すために使用されます。これは、クラスタで定義されたコマンドに対して行われるリモート プロシージャ コールに似ています。
書き込みトランザクションと同様に、呼び出しトランザクションは、時間指定トランザクションと時間指定なしトランザクションをサポートします。時間制限付きトランザクションの詳細については、時間制限付きアクションと時間制限なしアクションのセクションをご覧ください。
時間制限のない呼び出しトランザクション
リクエスト アクションを呼び出す
方向: イニシエーター -> ターゲット
読み取りリクエスト アクションや書き込みリクエスト アクションと同様に、このアクションでは、イニシエーターがターゲットに以下を提供します。
- 呼び出しリクエスト: クラスタ コマンドへのパスのリストと、コマンドのオプション引数(コマンド フィールド)。
- Timed Request: このアクションが Timed Invoke Transaction の一部であるかどうかを示すフラグ。
- レスポンスを抑制する: Invoke Response Action を抑制するかどうかを示すフラグ。
- インタラクション ID: 呼び出しリクエスト アクションを呼び出しレスポンス アクションに一致させるために使用される整数。
対応アクションを呼び出す
方向: ターゲット -> イニシエーター
ターゲットは、呼び出しリクエスト アクションを受信すると、次の内容を含む呼び出しレスポンス アクションでトランザクションを完了します。
- Invoke Responses: 送信されたすべての呼び出しリクエストに対するコマンド レスポンスまたはステータスのリスト。
- インタラクション ID: 呼び出しレスポンス アクションを呼び出しリクエスト アクションに一致させるために使用される整数。
時間制限のない呼び出しの制限
Invoke Request Action はグループキャストでもかまいませんが、その場合は Suppress Response フラグを設定する必要があります。その理由は、そうしないと、グループのすべてのメンバーからの同時応答によってネットワークがフラッディングする可能性があるためです。
この動作を有効にするには、Invoke Requests リストで使用されるパスにグループを含めることができます。また、エンドポイント フィールドにのみワイルドカードを含めることもできます。また、アクションがグループキャストの場合、このトランザクションはレスポンスなしで終了します。
時間指定呼び出しトランザクション
Timed Write Transactions と同様に、Timed Invoke Transactions も Timed Request Action で始まります。
時間指定リクエスト アクション
方向: イニシエーター -> ターゲット
イニシエーターは、以下を含むこのアクションを送信してトランザクションを開始します。
- タイムアウト: このトランザクションを開いたままにできるミリ秒数。この期間中にイニシエーターから送信された次のアクションは有効と見なされます。
Timed Request Action を受信すると、ターゲットは Status Response Action で Timed Request Action を確認する必要があります。イニシエーターは、エラーを報告しないステータス レスポンス アクションを受信すると、呼び出しリクエスト アクションを送信します。
リクエスト アクションを呼び出す
前述のリクエスト アクションの呼び出しと同じです。
対応アクションを呼び出す
前述のレスポンス アクションを呼び出すと同じです。
Timed Invoke の制限
すべての呼び出しコマンドは、時間指定インタラクションで呼び出すことができます。Timed Request Action、Invoke Request Action、Invoke Response Action は Unicast 専用であるため、Timed Invoke Transactions でグループキャストとして使用することはできません。
Invoke Request Action は、グループを含むパスの使用とワイルドカードの使用をサポートしていますが、Invoke Response Action はワイルドカードの使用をサポートしていません。