GoogleCloudPubSub
GoogleCloudPubSub는PubSub구현 지원Google Cloud 게시/구독. 순차적 전달 및 메시지 확인과 함께 Google Cloud 주제 및 구독을 사용하여 프로세스와 호스트 전반에 이벤트를 전달합니다.
Google Cloud의 분산 배포에 사용하세요. 단일 프로세스 전송에는 EventEmitterPubSub를 사용하세요. Redis에는 RedisStreamsPubSub을 사용하세요.
각 주제는 Google Cloud 주제에 매핑됩니다. 그룹 구독은 구독을 공유하므로 회원은 이벤트를 위해 경쟁합니다. 그룹이 없는 구독은 인스턴스별 구독을 생성하므로 모든 인스턴스가 모든 이벤트를 수신합니다.
설치설치에 대한 직접 링크
- npm
- pnpm
- Yarn
- Bun
npm install @mastra/google-cloud-pubsub
pnpm add @mastra/google-cloud-pubsub
yarn add @mastra/google-cloud-pubsub
bun add @mastra/google-cloud-pubsub
사용예사용예에 대한 직접 링크
프로젝트 ID와 같은 Google Cloud 클라이언트 구성을 전달합니다.
import { Mastra } from '@mastra/core'
import { GoogleCloudPubSub } from '@mastra/google-cloud-pubsub'
export const mastra = new Mastra({
pubsub: new GoogleCloudPubSub({
projectId: 'my-project',
}),
})
생성자 매개변수생성자 매개변수에 대한 직접 링크
config:
@google-cloud/pubsub 클라이언트 문서를 참조하세요.행동 양식행동 양식에 대한 직접 링크
GoogleCloudPubSub는 PubSub 계약을 구현합니다. 아래 메서드는 이 구현에만 해당합니다.
init(topicName, group?)inittopicname-group에 대한 직접 링크
주제와 구독이 아직 없으면 생성하고 구독을 반환합니다. subscribe가 내부적으로 이를 호출하므로 직접 호출할 일은 거의 없습니다.
await pubsub.init('workflow.events')
subscribe(topic, cb, options?)subscribetopic-cb-options에 대한 직접 링크
주제를 구독합니다. options.group을 지정하면 그룹 멤버가 구독을 공유하며 이벤트를 두고 경쟁합니다. 그룹이 없으면 인스턴스가 자체 구독을 통해 모든 이벤트를 수신합니다.
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가 이벤트를 다시 전달합니다.