본문으로 건너뛰기

UnixSocketPubSub

UnixSocketPubSubPubSubUnix 도메인 소켓을 사용하여 단일 호스트의 프로세스 전체에 이벤트를 전달하는 구현입니다. 하나의 프로세스를 브로커로 선택하고 다른 프로세스는 클라이언트로 연결됩니다. 브로커가 종료되면 나머지 클라이언트는 자동으로 새 브로커를 선택합니다.

Mastra Code 터미널 인터페이스에서 스레드 스트림을 조정하는 경우처럼 여러 로컬 프로세스가 스트림을 공유해야 할 때 사용하세요. 단일 프로세스 전송에는 EventEmitterPubSub를 사용하세요. 호스트 간 분산 전송에는 RedisStreamsPubSub 또는 GoogleCloudPubSub을 사용하세요. UnixSocketPubSub푸시 전송입니다. 이벤트는 읽기 루프 없이 도착하므로 Mastra는 이에 대해 풀 작업자를 실행하지 않습니다.

사용예
사용예에 대한 직접 링크

참여하는 모든 프로세스가 공유하는 소켓 경로를 전달합니다.

src/mastra/index.ts
import { Mastra } from '@mastra/core'
import { UnixSocketPubSub } from '@mastra/core/events'

export const mastra = new Mastra({
pubsub: new UnixSocketPubSub('/tmp/mastra/events.sock'),
})

생성자 매개변수
생성자 매개변수에 대한 직접 링크

socketPath:

string
Unix 도메인 소켓의 경로입니다. 스트림을 공유하는 모든 프로세스가 동일한 경로를 사용해야 합니다.

options?:

UnixSocketPubSubOptions
선택적 구성입니다.
number

속성
속성에 대한 직접 링크

socketPath:

string
생성자에 전달된 소켓 경로입니다.

supportedModes:

ReadonlyArray<"pull" | "push">
["push"]를 반환합니다.

isBroker:

boolean
이 인스턴스가 현재 브로커 역할을 하는지 여부입니다.

remoteClientCount:

number
이 브로커에 연결된 원격 클라이언트 수입니다. 이 인스턴스가 브로커가 아니면 항상 0입니다.

행동 양식
행동 양식에 대한 직접 링크

UnixSocketPubSubPubSub 계약을 구현합니다. 아래 메서드는 이 구현에만 해당합니다.

close()
close에 대한 직접 링크

소켓 연결을 닫고 이 인스턴스가 브로커인 경우 브로커 역할을 해제합니다. 정상적인 종료 중에 이를 호출하십시오.

await pubsub.close()

브로커 선출
브로커 선출에 대한 직접 링크

소켓을 바인딩하는 첫 번째 프로세스는 브로커가 되어 연결된 모든 클라이언트 간에 이벤트를 라우팅합니다. 다른 프로세스는 클라이언트로 연결됩니다. 브로커가 종료되면 배타적 잠금 파일이 다음 선택을 직렬화합니다. 정확히 한 명의 클라이언트가 새 브로커가 됩니다. 나머지 클라이언트는 이를 다시 구독합니다. 이렇게 하면 두 프로세스가 모두 브로커 역할을 하는 분할 브레인 상태를 방지할 수 있습니다.