본문으로 건너뛰기

GoogleCloudPubSub

GoogleCloudPubSubPubSub구현 지원Google Cloud 게시/구독. 순차적 전달 및 메시지 확인과 함께 Google Cloud 주제 및 구독을 사용하여 프로세스와 호스트 전반에 이벤트를 전달합니다.

Google Cloud의 분산 배포에 사용하세요. 단일 프로세스 전송에는 EventEmitterPubSub를 사용하세요. Redis에는 RedisStreamsPubSub을 사용하세요. 각 주제는 Google Cloud 주제에 매핑됩니다. 그룹 구독은 구독을 공유하므로 회원은 이벤트를 위해 경쟁합니다. 그룹이 없는 구독은 인스턴스별 구독을 생성하므로 모든 인스턴스가 모든 이벤트를 수신합니다.

설치
설치에 대한 직접 링크

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을 지정하면 그룹 멤버가 구독을 공유하며 이벤트를 두고 경쟁합니다. 그룹이 없으면 인스턴스가 자체 구독을 통해 모든 이벤트를 수신합니다.

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')

승인
승인에 대한 직접 링크

전달되는 각 이벤트에는 acknack 함수가 포함됩니다. 처리가 성공하면 ack를 호출하여 구독에서 이벤트를 제거하세요. 어느 함수도 호출하지 않으면 승인 기한이 만료된 후 Google Cloud가 이벤트를 다시 전달합니다.