HTTP タスクは、BufferTask
メソッドまたは CreateTask
メソッドを使用して作成できます。このページでは、HTTP タスクを作成する 2 つの方法の中からの選び方について説明します。
BufferTask
メソッドを使用すると、HTTP リクエストをキューに送信してタスクを作成できます。CreateTask
メソッドを使用すると、タスク オブジェクトを構築してタスクを作成できます。ほとんどのユースケースでは、タスク オブジェクトを明示的に構築する必要はありません。タスクを作成する最適な方法は、キューにキューレベルのルーティングがあるかどうかによって異なります。
始める前に
以下に挙げるユースケースが該当するかどうかをご確認ください。
- REST API ではなく、RPC API またはクライアント ライブラリを使用してタスクを作成する場合
- 汎用 HTTP ターゲット(App Engine ターゲットまたはそれ以外のターゲット)のための一般的なタスクオブジェクトではなく、App Engine タスクオブジェクトとしてタスクを作成する場合
これらのいずれかに該当する場合は、タスク作成方法を選択する必要はありません。サポートされているメソッドは 1 つのみ(CreateTask
メソッド)です。以下にある、タスクタイプの CreateTask
ドキュメントに直接進んでください。
キューにキューレベルのルーティングがあるかどうかを確認する
ターミナルで、次の gcloud CLI コマンドを実行します。
gcloud tasks queues describe QUEUE_NAME
QUEUE_NAME
は、使用するキューの名前に置き換えます。出力で
httpTarget
フィールドを探し、uriOverride
が設定されているかどうかを確認します。出力に、
host
を指定したuriOverride
の行が含まれている場合、キューにはキューレベルのルーティングがあります。タスクの作成方法を選択するには、キューレベルのルーティングがあるキューをご覧ください。出力に
uriOverride
の行が含まれていない場合、またはuriOverride
の説明に指定されたhost
が表示されない場合、キューにはキューレベルのルーティングがありません。タスクの作成方法を選択するには、キューレベルのルーティングのないキュー(またはキューレベルのルーティングを構成する)をご覧ください。
キューレベルのルーティングがあるキュー
キューレベルのルーティングがあるキューの場合、タスクの作成方法は、タスクのルーティング要件によって異なります。
- タスクには、キューレベルで指定されたものと同じルーティング要件があります。
BufferTask
を使用します。BufferTask
メソッドを使用してタスクを作成する方法を確認します。 - タスクのルーティング要件がキューレベルで指定されたものと異なる: キューの UriOverrideEnforceMode を
IF_NOT_EXISTS
に設定して、キューレベルのルーティングが、ルーティングが存在しないものの、独自のルーティング仕様を持つタスクのルーティングを優先するタスク(BufferTask
タスクなど)に適用されるようにします。次に、CreateTask
を使用します。この方法では、タスクに対して個別にルーティングを指定できます。CreateTask
メソッドを使用してタスクを作成する方法を確認します。
キューレベルのルーティングのないキュー
キューレベルのルーティングがないキューの場合は、CreateTask
メソッドを使用して(または、キューレベルのルーティングを構成して)タスクを作成します。CreateTask
メソッドにはタスクのルーティングの指定が含まれます。これは、キューレベルでのルーティング情報がまだ存在しないキューに必要です。CreateTask
メソッドを使用してタスクを作成する方法を確認します。
キューレベルのルーティングについて
キューレベルのルーティングでは、キューに基づいて、タスクのデフォルトのルーティング情報を指定できます。独自のルーティング情報がないタスクだけにデフォルト ルーティングを適用するか、すべてのタスクにデフォルト ルーティングを適用するかを指定できます。
次の場合は、キューレベルのルーティングを選択します。
- タスク オブジェクトを構築するのではなく、標準の HTTP リクエストでタスクを作成する
- ターゲット サービスの前のバッファとしてキューを使用する
ターゲットごとのアプローチ
キューレベルのルーティングは、ターゲット サービスごとに 1 つのキューを使用するアーキテクチャに最適です。このモデルでは、次のことができます。
- ターゲットに基づいてタスクを管理する(ターゲット サービスが停止している場合にタスクのグループをリダイレクトするなど)
- キュー内のすべてのタスクを同じターゲットに送信する
BufferTask
メソッドを使用して、タスク オブジェクトを明示的に構築せずにタスクを作成する
キューレベルのオーバーライド動作をオンまたはオフにする
キューレベルのルーティングを構成したら、キューの UriOverrideEnforceMode を設定することで適用されるタイミングを決定できます。
IF_NOT_EXISTS
: キューレベルのルーティングは、タスクに独自のルーティング情報が含まれていない場合にのみ適用されます。キューが別のターゲットにタスクをディスパッチできるようにする場合は、この設定を使用します。ALWAYS
: タスクに独自のルーティング情報が含まれている場合でも、キューレベルのルーティングは常に適用されます。タスクレベルで設定されたルーティング情報は、キューレベルのルーティングによってオーバーライドされます。特定のキュー内のタスクに同じルーティング情報を使用するようにする場合は、この設定を使用します。