最新の SDK にアップグレードして push キューを Cloud Tasks に移行する(Java)

最新の 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 に移行する前の費用と割り当ての考慮事項について説明します。

  1. App Engine のソースコードにアクセスできることを確認します。

  2. Cloud Tasks と Cloud Scheduler API を有効にします。

    API の有効化

  3. App Engine サービス アカウントに SDK が Cloud Tasks API にタスクをディスパッチするために必要な権限を付与するには、プロジェクトに対する Cloud Tasks へのデータ追加roles/cloudtasks.enqueuer)IAM ロールを付与するよう管理者に依頼してください。

App Engine サービス SDK を更新する

  1. アプリケーションで最新バージョンの App Engine サービス SDK が使用されていることを確認します。

    pom.xml で、App Engine サービス SDK をバージョン v5.2.0-beta 以降に更新します。

    
        com.google.appengine
        appengine-api-1.0-sdk
        v5.2.0-beta
    
  2. 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>
    
  3. アプリをデプロイします。

    gcloud app deploy
    
  4. Cloud 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.SweeperServletweb.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>

次のステップ