Cloud Tasks REST API、RPC API、または Google Cloud クライアント ライブラリを使用して非同期コードを実行するタスクをキューに入れ、Java 11/17 App Engine 標準サービスを push ターゲットとして使用します。
この Java 11 の例では、次の 2 つのアプリケーションを使用しています。
tasks
アプリは、タスクを作成してキューに追加するコマンドライン ツールとしてローカルで動作します。tasks-handler
Spring Boot アプリは、タスク リクエストを受信するエンドポイントとして機能することで、Cloud Tasks リクエストをワーカーとして処理します。これがデプロイするメインの App Engine アプリになります。
始める前に
サンプルアプリをデプロイするには:
- Java SE 11 Development Kit(JDK)をダウンロードしてインストールします。
- Cloud Tasks の環境設定を行います。
- アプリのビルド、デプロイ、管理を行う Maven をダウンロードしてインストールします。
- gcloud CLI を初期化し、前の手順で作成したプロジェクトを使用するように構成します。
gcloud CLI
app-engine-java
コンポーネントをインストールします。gcloud components install app-engine-java
サンプルのセットアップ
サンプルをダウンロードしてインストールするには:
ローカルマシンにサンプルアプリのリポジトリのクローンを作成します。
git clone https://github.com/GoogleCloudPlatform/java-docs-samples.git
または、zip ファイルとしてサンプルをダウンロードして解凍します。tasks-handler
アプリの最上位ディレクトリに移動します。cd java-docs-samples/appengine-java11/tasks-handler/
App Engine に
tasks-handler
アプリをデプロイします。mvn package appengine:deploy -Dapp.deploy.projectId=PROJECT_ID
PROJECT_ID は実際の Cloud プロジェクトの ID に置き換えます。
pom.xml
ファイルですでにプロジェクト ID を指定している場合は、実行するコマンドに-Dapp.deploy.projectId
プロパティを含める必要はありません。
キューの作成
キューを作成するには、Google Cloud CLI の gcloud queues
コマンドを使用します。
コマンドラインで次のように入力します。
gcloud tasks queues create MY_QUEUE
キューが初期化されるまで待ちます。キューの作成を確認するには、
describe
コマンドを使用します。gcloud tasks queues describe MY_QUEUE
出力は次のようになります。
name: projects/PROJECT_ID/locations/LOCATION_ID/queues/MY_QUEUE // Note these ids rateLimits: maxBurstSize: 100 maxConcurrentDispatches: 1000 maxDispatchesPerSecond: 500.0 retryConfig: maxAttempts: 100 maxBackoff: 3600s maxDoublings: 16 minBackoff: 0.100s state: RUNNING
キューのタスクへの追加
ローカルでタスクを作成して設定済みのキューに追加し、そのタスクを非同期ワーカーに配信します。
appengine-java11/tasks
ディレクトリに移動して、アプリをコンパイルします。cd ../tasks mvn package
マシン上で次の環境変数を設定します。サンプルアプリはこれらを使用して、キューにタスクを追加するリクエストを作成します。
export GOOGLE_CLOUD_PROJECT=PROJECT_ID // The project ID you set up above export LOCATION_ID=LOCATION_ID // The region in which your queue is running export QUEUE_ID=MY_QUEUE // The queue you created above
注: ロケーション ID を確認するには、次のgcloud
コマンドを使用します。gcloud tasks locations list
デプロイしたタスクハンドラ コントローラ上の
/tasks/create
エンドポイントをターゲットとするタスク(ペイロードは指定)を作成します。ペイロードは、ワーカーがタスクを処理するために必要とするリクエストの任意のデータです。この例では、サンプルにハードコーディングされているため、指定する必要はありません。mvn exec:java -Dexec.mainClass="com.example.task.CreateTask"
タスクがワーカーに渡され、ワーカーがタスクを処理すると、ワーカーから 2xx の成功ステータス コードが Cloud Tasks サービスに返され、タスクはそのキューから自動的に削除されます。ワーカー サービスのログを表示して、タスクが受信されたことを確認します。
gcloud app logs read
次のステップ
以上で Cloud Tasks キューへのタスクの追加が完了しました。Cloud Tasks の理解をさらに深めるには、次のページをご覧ください。
- キューとタスクの管理では、既存のタスクとキューの管理(削除を含む)について説明します。
- Cloud Tasks キューの作成ガイドを使用して、Cloud Tasks キューを作成して構成します。
- gRPC を使用したキュー管理の詳細については、gRPC API リファレンスをご覧ください。
- REST を使用したキュー管理の詳細については、REST API リファレンスをご覧ください。
- Cloud Tasks の概要で Cloud Tasks キューの詳細を確認します。