> Discover all available pages from the documentation index: https://mastra.zisheng.pro/ko/llms.txt # GoogleCloudPubSub `GoogleCloudPubSub`는[`PubSub`](https://mastra.zisheng.pro/ko/reference/pubsub/base)구현 지원[Google Cloud 게시/구독](https://cloud.google.com/pubsub/docs). 순차적 전달 및 메시지 확인과 함께 Google Cloud 주제 및 구독을 사용하여 프로세스와 호스트 전반에 이벤트를 전달합니다. Google Cloud의 분산 배포에 사용하세요. 단일 프로세스 전송에는 [`EventEmitterPubSub`](https://mastra.zisheng.pro/ko/reference/pubsub/event-emitter)를 사용하세요. Redis에는 [`RedisStreamsPubSub`](https://mastra.zisheng.pro/ko/reference/pubsub/redis-streams)을 사용하세요. 각 주제는 Google Cloud 주제에 매핑됩니다. 그룹 구독은 구독을 공유하므로 회원은 이벤트를 위해 경쟁합니다. 그룹이 없는 구독은 인스턴스별 구독을 생성하므로 모든 인스턴스가 모든 이벤트를 수신합니다. ## 설치 **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/ko/reference/pubsub/base) 계약을 구현합니다. 아래 메서드는 이 구현에만 해당합니다. ### `init(topicName, group?)` 주제와 구독이 아직 없으면 생성하고 구독을 반환합니다. `subscribe`가 내부적으로 이를 호출하므로 직접 호출할 일은 거의 없습니다. ```typescript await pubsub.init('workflow.events') ``` ### `subscribe(topic, cb, options?)` 주제를 구독합니다. `options.group`을 지정하면 그룹 멤버가 구독을 공유하며 이벤트를 두고 경쟁합니다. 그룹이 없으면 인스턴스가 자체 구독을 통해 모든 이벤트를 수신합니다. ```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가 이벤트를 다시 전달합니다.