最新の App Engine サービス SDK バージョンにアップグレードする前に、移行の概要を確認してください。
App Engine サービス SDK を最新バージョンに更新すると、Cloud Tasks に自動的に移行できます。アップグレード後、SDK は PushQueue 呼び出しを Cloud Tasks フロントエンド API に自動的にリダイレクトします。Cloud Tasks は既存のタスクキューとタスクを保持するため、追加の移行は必要ありません。
更新された SDK は、Cloud Tasks API を使用して Task Queues の機能との機能パリティを維持します。SDK は次の機能をサポートしています。
- タスクの一括作成: SDK はバッチ API を使用して、1 回の呼び出しで最大 100 個のタスクを追加できるようにします。
- タスクレベルの再試行: SDK はタスク固有の再試行構成をサポートしています。
- トランザクション タスク: SDK は、Datastore トランザクション内でタスクをキューに追加します。信頼性を維持するには、
cron.yamlファイルを作成または変更します。
料金と割り当て
push キューを Cloud Tasks に移行すると、アプリの料金と割り当てに影響する場合があります。
料金
移行する前に、Cloud Tasks の料金を確認して、月額料金を見積もります。
タスクキューと同様に、Cloud Tasks push ターゲットを使用して App Engine アプリにリクエストを送信するのは無料です。ただし、タスクキューとは異なり、Cloud Tasks では、タスクの作成、削除、管理などのオペレーションに対して課金されます。これにより、無料の App Engine タスクキューと比較して、月額料金が全体的に高くなる可能性があります。
割り当て
Cloud Tasks リクエストは、App Engine リクエストの割り当てにもカウントされます。
Task Queues と同様に、Cloud Tasks にはサービス固有の割り当てがあります。Cloud Tasks に移行すると、割り当てが変更される可能性があります。
始める前に
以降のセクションでは、push キューを Cloud Tasks に移行する前の費用と割り当ての考慮事項について説明します。
App Engine のソースコードにアクセスできることを確認します。
Cloud Tasks と Cloud Scheduler API を有効にします。
App Engine サービス アカウントに SDK が Cloud Tasks API にタスクをディスパッチするために必要な権限を付与するには、プロジェクトに対する Cloud Tasks へのデータ追加(
roles/cloudtasks.enqueuer)IAM ロールを付与するよう管理者に依頼してください。
App Engine サービス SDK を更新する
アプリケーションで最新バージョンの App Engine サービス SDK が使用されていることを確認します。
pom.xmlで、App Engine サービス SDK をバージョンv5.2.0-beta以降に更新します。com.google.appengine appengine-api-1.0-sdk v5.2.0-beta Cloud Tasks のルーティングを有効にする
runtime: java25 service: my-service-b env_variables: APPENGINE_USE_CLOUDTASK_PUSH_QUEUE: "true"pom.xmlの App Engine SDK 依存関係をバージョンv5.2.0-beta以降に更新します。アプリで XML 構成(
appengine-web.xml)を使用している場合:<appengine-web-app xmlns="http://appengine.google.com/ns/1.0"> <service>my-java-service-b</service> <runtime>java25</runtime> <env-variables> <env-var name="APPENGINE_USE_CLOUDTASK_PUSH_QUEUE" value="true" /> </env-variables> </appengine-web-app>アプリをデプロイします。
gcloud app deployCloud Tasks で push キューを確認することで、アプリが Cloud Tasks を使用していることを確認します。
トランザクション タスクを構成する(省略可)
アプリが Datastore トランザクション内でタスクをキューに登録する場合、SDK は内部 cron ジョブを使用して、Datastore の commit 中にキューへの登録に失敗したタスクが最終的に処理されるようにします。
push キューのトランザクション タスクを処理するには、cron.yaml ファイルを作成または更新して、内部プロセッサを定期的に呼び出します。次に例を示します。
cron:
- description: "Process push queue transactional tasks"
url: /_ah/cloudtask/sweep
schedule: every 30 minutes # Change this based on the usage pattern
Java 17/21 Jakarta EE ランタイムの utils.servlet.SweeperServlet または utils.servlet.jakarta.SweeperServlet の web.xml ファイルに URL マッピングを追加します。
<servlet>
<servlet-name>cloudtask_sweep</servlet-name>
<servlet-class>com.google.apphosting.utils.servlet.SweeperServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>cloudtask_sweep</servlet-name>
<url-pattern>/_ah/cloudtask/sweep</url-pattern>
</servlet-mapping>
次のステップ
- Cloud Tasks のドキュメント
- Cloud Tasks のクライアント ライブラリ
- Cloud Tasks の REST リファレンスの概要
- Cloud Tasks の RPC リファレンスの概要