Round-robin dispatching
Message acknowledgement
Message Durability
Fair dispatch
옵션 설정 코드 예시 (noAck, durable, Fair dispatch)
const USER_SERVICE_PROXY = {
provide: 'USER_SERVICE',
useFactory: (config: ConfigService) => {
return ClientProxyFactory.create({
transport: Transport.RMQ,
options: {
urls: [
`amqp://${config.get('RABBITMQ_USER')}:${config.get(
'RABBITMQ_PW'
)}@${config.get('BROKER_HOST')}:${config.get('BROKER_PORT')}`,
],
queue: 'user',
noAck: true, // true인 경우, Consumer의 메시지 수신응답을 받지 않음
queueOptions: {
durable: true, // true인 경우, 브로커 서버가 재시작되어도 기존 Queue를 보존
},
prefetchCount: 1 // 1인 경우, 연결된 Consumer는 동시에 1개의 작업만 처리할 수 있음
},
});
},
inject: [ConfigService],
};
개요
Exchanges
기본 exchange 옵션은 fanout을 사용 (전체 Queue 대상으로 연결된 모든 Queue에 전달)
- 활용 예: 스포츠 뉴스 사이트에서 클라이언트들에게 실시간 점수 업데이트
결과
개요
Direct Exchange
결과
왼쪽부터 순서대로 gateway, microservice 1(info+warning), microservice 2(warning)이며, "warning" key에 양쪽 microservice로 메시지가 전달 됨을 확인할 수 있음