> Discover all available pages from the documentation index: https://mastra.zisheng.pro/ja/llms.txt # GoogleCloudPubSub `GoogleCloudPubSub` は [`PubSub`](https://mastra.zisheng.pro/ja/reference/pubsub/base) の実装であり、[Google Cloud Pub/Sub](https://cloud.google.com/pubsub/docs) を基盤とします。Google Cloud のトピックとサブスクリプションを使用し、順序付き配信とメッセージ確認応答に対応して、プロセスやホストをまたいでイベントを配信します。 Google Cloud 上の分散デプロイメントで使用します。単一プロセスで配信する場合は [`EventEmitterPubSub`](https://mastra.zisheng.pro/ja/reference/pubsub/event-emitter) を、Redis を使用する場合は [`RedisStreamsPubSub`](https://mastra.zisheng.pro/ja/reference/pubsub/redis-streams) を使用してください。 各トピックは Google Cloud のトピックに対応します。グループを指定したサブスクリプションは1つのサブスクリプションを共有するため、メンバー間でイベントの取得を競合します。グループを指定しないサブスクリプションではインスタンスごとにサブスクリプションが作成されるため、すべてのインスタンスがすべてのイベントを受信します。 ## インストール **npm**: ```bash npm install @mastra/google-cloud-pubsub ``` **pnpm**: ```bash pnpm add @mastra/google-cloud-pubsub ``` **Yarn**: ```bash yarn add @mastra/google-cloud-pubsub ``` **Bun**: ```bash bun add @mastra/google-cloud-pubsub ``` ## 使用例 プロジェクト ID など、Google Cloud クライアントの設定を渡します。 ```typescript import { Mastra } from '@mastra/core' import { GoogleCloudPubSub } from '@mastra/google-cloud-pubsub' export const mastra = new Mastra({ pubsub: new GoogleCloudPubSub({ projectId: 'my-project', }), }) ``` ## コンストラクターのパラメーター **config** (`ClientConfig`): 認証情報やプロジェクト ID を含む Google Cloud Pub/Sub クライアントの設定。すべてのフィールドについては、@google-cloud/pubsub クライアントのドキュメントを参照してください。 ## メソッド `GoogleCloudPubSub` は [`PubSub`](https://mastra.zisheng.pro/ja/reference/pubsub/base) の規約を実装します。以下のメソッドは、この実装に固有のものです。 ### `init(topicName, group?)` トピックとサブスクリプションがまだ存在しない場合に作成し、サブスクリプションを返します。`subscribe` が内部でこのメソッドを呼び出すため、直接呼び出すことはほとんどありません。 ```typescript await pubsub.init('workflow.events') ``` ### `subscribe(topic, cb, options?)` トピックを購読します。`options.group` を指定すると、グループのメンバーが1つのサブスクリプションを共有し、イベントの取得を競合します。グループを指定しない場合、インスタンスは独自のサブスクリプションを通じてすべてのイベントを受信します。 ```typescript await pubsub.subscribe('workflow.events', (event, ack, nack) => { console.log(event) }) ``` ### `flush()` 保留中の確認応答が完了するまで待機します。 ```typescript await pubsub.flush() ``` ### `destroy(topicName)` トピック名に対応するサブスクリプションとトピックを削除します。Google Cloud リソースのクリーンアップに使用します。 ```typescript await pubsub.destroy('workflow.events') ``` ## 確認応答 配信される各イベントには `ack` 関数と `nack` 関数が含まれます。処理が成功したら `ack` を呼び出し、サブスクリプションからイベントを削除します。どちらも呼び出さなかった場合は、確認応答期限の経過後に Google Cloud がイベントを再配信します。