Run All Assertions Concurrently アサーション

Run All Assertions Concurrently アサーションは、すべて true と評価される必要がある 1 つ以上の子アサーションを整理するフォルダです。これは、すべての子アサーションが成功した場合にのみアサーションが成功するという点で、「All assertions must evaluate to true」複合アサーションに類似しています。主な違いは、Run All Assertions Concurrently アサーションは、その直下の子アサーションをすべて同時に実行し、前の子が完了するのを待たずに後続の子の評価を開始して、全体的な遅延を軽減するということです。このアサーションは、さまざまなバックエンド サービスに対するいくつかの HTTP リクエストの結果からレスポンスを組み立てる必要があり、すべての呼び出しを順次実行したくない場合に有用です。
gateway83
Run All Assertions Concurrently
アサーションは、すべて true と評価される必要がある 1 つ以上の子アサーションを整理するフォルダです。これは、すべての子アサーションが成功した場合にのみアサーションが成功するという点で、「All assertions must evaluate to true」複合アサーションに類似しています。主な違いは、Run All Assertions Concurrently アサーションは、その直下の子アサーションをすべて同時に実行し、前の子が完了するのを待たずに後続の子の評価を開始して、全体的な遅延を軽減するということです。このアサーションは、さまざまなバックエンド サービスに対するいくつかの HTTP リクエストの結果からレスポンスを組み立てる必要があり、すべての呼び出しを順次実行したくない場合に有用です。
ポリシー内での親アサーションおよび子アサーションの詳細については、「Gateway でのサービスおよびポリシーの理解」を参照してください。
Run All Assertions Concurrently アサーションは、子アサーションが含まれていない場合、またはすべての子アサーションが無効である場合は、常に成功します。
技術的な考慮事項
多くの並列スレッドを実行することによって、標準の「All assertions...」フォルダを使用する場合には発生しない問題を引き起こす可能性があるため、Run All Assertions Concurrently アサーションは注意して使用する必要があります。具体的には、以下の点に注意してください。
  • アサーションを同時に実行すると、Gateway がより早くメモリを使い果たす可能性があります。その影響は、
    io.httpMaxConcurrency
    および
    io.httpCoreConcurrency
    クラスタ プロパティの値を増やした場合に類似しています。
  • サイズが 200 KB を越えるメッセージの使用は推奨されません。
  • 同時に処理されるアサーションが多すぎる場合、新しい同時実行アサーションの実行が遅れます。
  • 同時実行のためにキューに入っているアサーションの数が、
    concall.globalMaxConcurrency
    クラスタ プロパティで設定されている制限値を超えている場合、時間がかかるジョブ(たとえば、低速なバックエンド Web サービスへの HTTP ルーティング)がキューにあると、大幅な遅延が発生する可能性があります。これが発生した場合は、以下を試します。
    • 同時実行アサーションの数を減らす
    • concall.globalMaxConcurrency
      クラスタ プロパティの値を増やす
    • io.httpMaxConcurrency
      クラスタ プロパティの値を減らす
  • 最初に失敗した子アサーションで処理が停止する「All assertions...」フォルダとは異なり、Run All Assertions Concurrently アサーションでは、失敗した子アサーションの後であっても、すべてのアサーションが評価されます。失敗が発生した場合、アサーションのステータス コードには、最初に失敗した子アサーションの値が返されます。
  • 子アサーションの実行中は、子アサーションによって使用される String または Message タイプのコンテキスト変数のみが使用可能です。
  • 元のリクエスト メッセージおよびレスポンス メッセージ(転送に固有のメッセージを含む)は、同時実行の前に String タイプの変数にコピーしていた場合、または Set Context Variable アサーションで
    ${request.mainpart}
    のようなソース表現を使用して Message タイプの変数にコピーしていた場合を除いて、使用できません。
  • Run All Assertions Concurrently アサーションの内のアサーションがデフォルトのリクエストまたはレスポンスに書き込んだ場合、その情報は無視され失われます。
  • 収集された認証情報および認証されたユーザ情報は、同時実行中には使用できません。
  • Run All Assertions Concurrently アサーションを別の Run All Assertions Concurrently アサーション内にネストできますが、その場合、
    Layer7 API Gateway
    がより早く同時実行を使い果たします。
アサーションの使用
以下のクラスタ プロパティを使用して、同時実行の動作を設定できます。
concall.globalMaxConcurrency
concall.globalCoreConcurrency
concall.globalMaxWorkQueue
詳細については、「クラスタ プロパティ」にある「入出力の設定」を参照してください。
アサーションの使用
  1. 以下のいずれかを実行します。
    • アサーションをポリシー作成ウィンドウに追加するには、「アサーションの追加」を参照してください。 
    • 既存のアサーションの設定を変更するには、下記の手順 2 に進みます
  2. 以下のいずれかの方法で、フォルダに子アサーションを入れます。
  3. ポリシー ウィンドウまたは[
    Assertions
    ]タブからアサーションをドラッグ アンド ドロップして、アサーションを追加します。
  4. アサーションをドラッグ アンド ドロップしてポリシー ウィンドウに戻すか、またはアサーションの削除を使用して、アサーションを削除します。