강의 대본

Queue group with Nats Fanout

description

image.png

하나의 subject(starfruit.internal.event)를 여러 개의 queue group이 구독하는 모델입니다.

3가지의 서비스가 있으며 각 서비스 별로 3개의 인스턴스가 있는 분산 환경 구성입니다.

각 서비스는 모두 공통의 nats Subejct를 구독하고 있어서 이벤트를 모든 서비스가 동시에 수신할 수 있지만, nats queue group(QueueSubscribe)을 이루고 있기 때문에 이벤트 수신 시, 서비스 내에서 단 하나의 인스턴스만이 이벤트를 처리합니다.

적용 사례

올바르지 못한 subject 예: user.requestSendEmail, user.recordLog (서비스간 비즈니스 로직 결합도 증가, 비즈니스 시나리오 변경 대비에 불리함)
올바른 subject 예: user.Signup

관련 문서

실행방법

# nats 서버 실행
docker-compose up -d

# poc 코드 실행
go run main.go