タスクの作成方法を選択する

HTTP タスクは、BufferTask メソッドまたは CreateTask メソッドを使用して作成できます。このページでは、HTTP タスクを作成する 2 つの方法の中からの選び方について説明します。

BufferTask メソッドを使用すると、HTTP リクエストをキューに送信してタスクを作成できます。CreateTask メソッドを使用すると、タスク オブジェクトを構築してタスクを作成できます。ほとんどのユースケースでは、タスク オブジェクトを明示的に構築する必要はありません。タスクを作成する最適な方法は、キューにキューレベルのルーティングがあるかどうかによって異なります。

始める前に

以下に挙げるユースケースが該当するかどうかをご確認ください。

  • REST API ではなく、RPC API またはクライアント ライブラリを使用してタスクを作成する場合
  • 汎用 HTTP ターゲット(App Engine ターゲットまたはそれ以外のターゲット)のための一般的なタスクオブジェクトではなく、App Engine タスクオブジェクトとしてタスクを作成する場合

これらのいずれかに該当する場合は、タスク作成方法を選択する必要はありません。サポートされているメソッドは 1 つのみ(CreateTask メソッド)です。以下にある、タスクタイプの CreateTask ドキュメントに直接進んでください。

キューにキューレベルのルーティングがあるかどうかを確認する

  1. ターミナルで、次の gcloud CLI コマンドを実行します。

    gcloud tasks queues describe QUEUE_NAME

    QUEUE_NAME は、使用するキューの名前に置き換えます。

  2. 出力で httpTarget フィールドを探し、uriOverride が設定されているかどうかを確認します。

キューレベルのルーティングがあるキュー

キューレベルのルーティングがあるキューの場合、タスクの作成方法は、タスクのルーティング要件によって異なります。

  • タスクには、キューレベルで指定されたものと同じルーティング要件があります。BufferTask を使用します。BufferTask メソッドを使用してタスクを作成する方法を確認します。
  • タスクのルーティング要件がキューレベルで指定されたものと異なる: キューの UriOverrideEnforceModeIF_NOT_EXISTS に設定して、キューレベルのルーティングが、ルーティングが存在しないものの、独自のルーティング仕様を持つタスクのルーティングを優先するタスク(BufferTask タスクなど)に適用されるようにします。次に、CreateTask を使用します。この方法では、タスクに対して個別にルーティングを指定できます。CreateTask メソッドを使用してタスクを作成する方法を確認します。

キューレベルのルーティングのないキュー

キューレベルのルーティングがないキューの場合は、CreateTask メソッドを使用して(または、キューレベルのルーティングを構成して)タスクを作成します。CreateTask メソッドにはタスクのルーティングの指定が含まれます。これは、キューレベルでのルーティング情報がまだ存在しないキューに必要です。CreateTask メソッドを使用してタスクを作成する方法を確認します。

キューレベルのルーティングについて

キューレベルのルーティングでは、キューに基づいて、タスクのデフォルトのルーティング情報を指定できます。独自のルーティング情報がないタスクだけにデフォルト ルーティングを適用するか、すべてのタスクにデフォルト ルーティングを適用するかを指定できます。

次の場合は、キューレベルのルーティングを選択します。

  • タスク オブジェクトを構築するのではなく、標準の HTTP リクエストでタスクを作成する
  • ターゲット サービスの前のバッファとしてキューを使用する

ターゲットごとのアプローチ

キューレベルのルーティングは、ターゲット サービスごとに 1 つのキューを使用するアーキテクチャに最適です。このモデルでは、次のことができます。

  • ターゲットに基づいてタスクを管理する(ターゲット サービスが停止している場合にタスクのグループをリダイレクトするなど)
  • キュー内のすべてのタスクを同じターゲットに送信する
  • BufferTask メソッドを使用して、タスク オブジェクトを明示的に構築せずにタスクを作成する

キューレベルのオーバーライド動作をオンまたはオフにする

キューレベルのルーティングを構成したら、キューの UriOverrideEnforceMode を設定することで適用されるタイミングを決定できます。

  • IF_NOT_EXISTS: キューレベルのルーティングは、タスクに独自のルーティング情報が含まれていない場合にのみ適用されます。キューが別のターゲットにタスクをディスパッチできるようにする場合は、この設定を使用します。
  • ALWAYS: タスクに独自のルーティング情報が含まれている場合でも、キューレベルのルーティングは常に適用されます。タスクレベルで設定されたルーティング情報は、キューレベルのルーティングによってオーバーライドされます。特定のキュー内のタスクに同じルーティング情報を使用するようにする場合は、この設定を使用します。