RabbitMQ tutorial - Publish/Subscribe | RabbitMQ
일단 RabbitMQ의 chanel, exchange, queue관련 용어를 숙지한 상태에서 그림을 이해하면 좋다.
누군가 이벤트가 필요할수 있다고 판단해 이벤트를 발행하고 싶다면
이벤트를 라우팅해줄 exchange
를 만들어 주기만 하면 된다.
아래는 크롤링시
이벤트 발생시 이벤트를 보낼 규칙을 적은 exchange(SCHOOL.NOTIFICATIONS
)를 생성한 모습이다.
SCHOOL.NOTIFICATIONS
) 설정// connection 생성
const conn = await amqplib.connect("amqp://localhost");
// chanel 생성
const ch = await this.conn.createChannel();
// topic 하는 Exchange (없으면 생성 있으면) 조회
// 인자 : (exchange 이름, 라우팅 규칙 타입, 옵션)
// 반환하는 exchange로 제어하는게 아닌 exchange 이름('CRAWLING')으로 규칙을 설정 및 발행함
await ch.assertExchange("SCHOOL.NOTIFICATIONS", "topic");
SCHOOL.NOTIFICATIONS
)로 이벤트 발행// NEW_NOTICE 토픽의 이벤트 전송
ch.publish("SCHOOL.NOTIFICATIONS", "new.notice", Buffer.from("{\\"id\\": ...}"));