pull キューの Pub/Sub への移行(Java)

このページでは、タスクキューから Pub/Sub に pull キューコードを移行する方法について説明します。App Engine で pull キューの処理を実行する場合、現時点では Pub/Sub がおすすめの方法です。

アプリで pull キューと push キューの両方を使用する場合は、このガイドに従って、pull キューを Pub/Sub に移行してから push キューを新しい push キューサービス Cloud Tasks に移行します。push キューを Cloud Tasks に移行した後に pull キューを移行することはおすすめしません。queue.yaml ファイルを使用することにより Cloud Tasks で予期しない動作が発生する可能性があるためです。

Pub/Sub で現在利用できない機能

次のタスクキューの機能は、現在、Pub/Sub で使用できません。

  • タグによるバッチ処理
  • 自動重複除去

料金と割り当て

pull キューを Pub/Sub に移行すると、アプリの料金と割り当てに影響する場合があります。

料金

Pub/Sub には独自の料金が適用されます。タスクキューと同様に、App Engine アプリに Pub/Sub を使用してリクエストを送信するとアプリに費用がかかることがあります。

割り当て

Pub/Sub の割り当ては、タスクキューの割り当てとは異なります。タスクキューと同様に、Pub/Sub から App Engine アプリにリクエストを送信すると、App Engine リクエストの割り当てに影響する場合があります。

移行前

以降のセクションでは、pull キューを Pub/Sub に移行する前の設定手順について説明します。

Pub/Sub API の有効化

Pub/Sub API を有効にするには、API ライブラリの [Pub/Sub API] で [有効にする] をクリックします。[有効にする] ボタンの代わりに [管理] ボタンが表示されている場合は、以前にプロジェクトの Pub/Sub API を有効にしているため、再び有効にする必要はありません。

Pub/Sub API に対するアプリの認証

Pub/Sub API に対してアプリを認証する必要があります。このセクションでは、2 つの異なるユースケースの認証について説明します。

アプリをローカルで開発またはテストするには、サービス アカウントを使用することをおすすめします。サービス アカウントを設定してアプリに接続する手順については、サービス アカウントの認証情報を手動で取得して提供するをご覧ください。

アプリを App Engine にデプロイする場合、新しい認証を行う必要はありません。アプリケーションのデフォルト認証情報(ADC)では、App Engine アプリの認証の詳細が推測されます。

Google Cloud CLI のダウンロード

まだインストールしていない場合は、Google Cloud CLI をダウンロードしてインストールし、Pub/Sub API で gcloud CLI を使用します。Google Cloud CLI がすでにインストールされている場合は、ターミナルから次のコマンドを実行します。

gcloud components update

Cloud クライアント ライブラリのインポート

アプリでクライアント ライブラリを使用するには、クライアント ライブラリのインストールの Pub/Sub の手順を行ってください。

Pub/Sub キューと pull キュー

機能の比較

Pub/Sub は、パブリッシャー / サブスクライバーの関係を通じてワーカーに作業を送信します。Pub/Sub の pull サブスクリプションは、サブスクライバーがトピックからメッセージを pull するため、タスクキューの pull キューと似ています。タスクキューの pull キューのコア機能と、Pub/Sub の pull サブスクリプションの関連機能を次の表に示します。

タスクキューの機能 Pub/Sub の機能
キュー トピック
タスク メッセージ
ワーカー サブスクライバー

Pub/Sub アーキテクチャの詳細については、Cloud Pub/Sub: Google 規模のメッセージ サービスをご覧ください。

ワークフローの比較

タスクキューの pull キューと Pub/Sub の pull サブスクリプションの一般的なワークフローの比較を次の表に示します。

タスクキューのワークフロー Pub/Sub のワークフロー
pull キューを作成する トピックを作成し、サブスクライバー(ワーカー)をトピックに登録する
タスクを作成してキューに追加する メッセージを作成してトピックに公開する
ワーカーがタスクをリースする サブスクライバーがトピックからメッセージを pull する
ワーカーがタスクを処理する サブスクライバーがメッセージを処理する
ワーカーがタスクをキューから削除する サブスクライバーがメッセージを確認応答します
リースが期限切れになる すべてのサブスクライバーがメッセージを確認応答すると、トピックでメッセージが削除される

Pub/Sub での pull サブスクリプションの作成

Pub/Sub の pull サブスクリプションは、タスクキューの pull キューのように使用できます。トピックのサブスクリプションには有効期限がなく、複数のワーカーに同時に存在することもあります。これは、複数のワーカーが 1 つのメッセージを処理できることを意味します。これは、Pub/Sub の主なユースケースの 1 つです。タスクキューの pull キューを Pub/Sub の pull サブスクリプションとして再作成するには、各ワーカーにトピックを作成し、関連するワーカーのみをトピックに登録します。これにより、タスクキューのように各メッセージが 1 名のワーカーによってのみ処理されるようになります。pull サブスクリプションの作成と管理の詳細については、トピックとサブスクリプションの管理をご覧ください。

pull キューの削除

タスクキューの pull キューを Pub/Sub の pull サブスクリプションに移行した後に、queue.yaml ファイルを使用してタスクキューから pull キューを削除します。各 pull キューを削除してから、次のキューを移行することをおすすめします。これにより、他の pull キューの移行時に、アプリが新しい Pub/Sub の pull サブスクリプションから受け取った作業を複製しなくなります。タスクキューの pull キューを単一のデプロイで削除せずに 1 つずつ削除すると、App Engine ののデプロイ割り当てに大きな影響を与える可能性があるので注意してください。

タスクキューからすべての pull キューを削除した後は、アプリの今後のデプロイで queue.yaml ファイルを省略できます。

アプリで pull キューのみを使用する場合は、コード内のタスクキュー API への参照をすべて削除します。アプリで pull キューと push キューの両方を使用する場合は、pull キューのみを使用するファイルで発生するタスクキュー API への参照を削除するか、push キューを移行するまで待機して、すべてのファイルからタスクキュー API への参照を削除します。

次のステップ