ここでは、よくある 2 つの課題に対してプールとプールルールを組み合わせる方法を示します。
Audience ワークフローと Journey ワークフローは通常、アクティベーションの前に実行する必要があり、アドホックなワークフローによって妨げられてはなりません。これらの重要なワークフロータイプ専用のプールを作成して、常にスロットが利用可能な状態にしておきます。
プール:
{
"name": "critical_workflows",
"concurrencyLimit": 100
}API がこのプールに対して id: "1" を返すとします。
ルール:
{
"priority": 10,
"poolId": "1",
"conditions": [
{"type": "workflow_type", "values": ["audience", "customer_journey"]}
]
}この設定により、起動タイプにかかわらず、すべての Audience ワークフローと Journey ワークフローが critical_workflows プールに割り当てられます。このプールの 100 スロットが他のワークフローに使われることはありません。
ある特定のワークフローが外部のエラーにより想定よりもはるかに長く実行され続け、デフォルトプールを埋め尽くしているとします。上流のエラーが解消されれば正常に終了するため、強制的に停止させたくはありません。他の作業を妨げないように、小さな隔離用プールに移しましょう。
プール:
{
"name": "penalty_box",
"concurrencyLimit": 10
}API がこのプールに対して id: "2" を返すとします。
ルール:
{
"priority": 10,
"poolId": "2",
"conditions": [
{"type": "workflow_name", "operator": "starts_with", "values": ["external_"]}
]
}このルールが設定された後、ワークフロー名が external_ で始まる、新規に作成されるすべてのアテンプトは penalty_box プールに割り当てられ、並行実行は最大 10 件に制限されます。他のワークフローには影響しません。
プールの割り当ては、アテンプトが作成された時点で確定します。すでに実行中のアテンプトは、ルールを追加してもそのまま元のプールに留まります。
プールを作成するには、デフォルトプールに新しいプールの並行実行数の上限以上の空きスロットが必要です。デフォルトプールに余裕があるうちに penalty_box のような隔離用プールを事前に作成しておけば、必要なときにすぐ問題のあるワークフローを移動できます。