メインコンテンツへ移動

GoogleCloudPubSub

GoogleCloudPubSubPubSub の実装であり、Google Cloud Pub/Sub を基盤とします。Google Cloud のトピックとサブスクリプションを使用し、順序付き配信とメッセージ確認応答に対応して、プロセスやホストをまたいでイベントを配信します。

Google Cloud 上の分散デプロイメントで使用します。単一プロセスで配信する場合は EventEmitterPubSub を、Redis を使用する場合は RedisStreamsPubSub を使用してください。

各トピックは Google Cloud のトピックに対応します。グループを指定したサブスクリプションは1つのサブスクリプションを共有するため、メンバー間でイベントの取得を競合します。グループを指定しないサブスクリプションではインスタンスごとにサブスクリプションが作成されるため、すべてのインスタンスがすべてのイベントを受信します。

インストール
インストールへの直接リンク

npm install @mastra/google-cloud-pubsub

使用例
使用例への直接リンク

プロジェクト ID など、Google Cloud クライアントの設定を渡します。

src/mastra/index.ts
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 クライアントのドキュメントを参照してください。

メソッド
メソッドへの直接リンク

GoogleCloudPubSubPubSub の規約を実装します。以下のメソッドは、この実装に固有のものです。

init(topicName, group?)
inittopicname-groupへの直接リンク

トピックとサブスクリプションがまだ存在しない場合に作成し、サブスクリプションを返します。subscribe が内部でこのメソッドを呼び出すため、直接呼び出すことはほとんどありません。

await pubsub.init('workflow.events')

subscribe(topic, cb, options?)
subscribetopic-cb-optionsへの直接リンク

トピックを購読します。options.group を指定すると、グループのメンバーが1つのサブスクリプションを共有し、イベントの取得を競合します。グループを指定しない場合、インスタンスは独自のサブスクリプションを通じてすべてのイベントを受信します。

await pubsub.subscribe('workflow.events', (event, ack, nack) => {
console.log(event)
})

flush()
flushへの直接リンク

保留中の確認応答が完了するまで待機します。

await pubsub.flush()

destroy(topicName)
destroytopicnameへの直接リンク

トピック名に対応するサブスクリプションとトピックを削除します。Google Cloud リソースのクリーンアップに使用します。

await pubsub.destroy('workflow.events')

確認応答
確認応答への直接リンク

配信される各イベントには ack 関数と nack 関数が含まれます。処理が成功したら ack を呼び出し、サブスクリプションからイベントを削除します。どちらも呼び出さなかった場合は、確認応答期限の経過後に Google Cloud がイベントを再配信します。