RabbitMQ
- 이전 게시물에서 Pub/Sub 메시지 송수신은,
- 메시지를 모든 Consumer에게 Broadcast하는 방법이였습니다.
- RabbitMQ에서 RoutingKey를 이용해서 특정 Queue에서만 메시지를 송수신 할 수 있습니다.
메시지 송신/수신 - RoutingKey
- RoutingKey를 이용하면 메시지를 필터링할 수 있습니다.
- 메시지는 바인딩 키가 일치하는 Queue로 송신합니다.
RoutingKey를 이용하기 위한 Binding
- 기존에 사용하던 Exchange가 선언 된 경우 오류가 발생할 수 있습니다.
- Exchange를 삭제해줘야합니다.
Exchange 설정
// Error 발생 시 Exchange 삭제
//channel.ExchangeDelete(exchangeName, true);
var ex_type = ExchangeType.Direct;
channel.ExchangeDeclare(
exchange: exchangeName,
type: ex_type
);
Queue Binding설정
- Queue2를 추가로 바인딩할 수 있다.
// Binding1
channel.QueueBind(
queue: qName,
exchange: exchangeName,
routingKey: "black"
);
// Binding2 (MultiBinding)
channel.QueueBind(
queue: qName2,
exchange: exchangeName,
routingKey: "orange"
);
Publish 설정
- 각 routingkey와 매칭되는 Queue에 메시지를 송신할 수 있습니다.
channel.BasicPublish(
exchange: exchangeName,
routingKey: "black",
basicProperties: null,
body: Encoding.UTF8.GetBytes($"{DateTime.Now}"));
channel.BasicPublish(
exchange: exchangeName,
routingKey: "orange",
basicProperties: null,
body: Encoding.UTF8.GetBytes($"{DateTime.Now}"));
C# RabbitMQ - RoutingKey 샘플
- 기본적으로 RabbitMQ 서버가 실행됐다는 전제하에 실행해야합니다.
- RabbitMQ Config는 사용자 환경에 맞게 설정해야합니다.
- pub, sub1, sub2 모두 실행시켜줘야 합니다.
'프로그래밍 > RabbitMQ' 카테고리의 다른 글
[RabbitMQ] 클러스터링 (0) | 2023.05.03 |
---|---|
[RabbitMQ] 성능 향상 위한 가이드 (0) | 2023.04.28 |
[RabbitMQ] 메시지 송수신 - Publish/Subscribe (0) | 2023.04.19 |
[RabbitMQ] 파일 송수신 (이미지 송수신) (0) | 2023.03.30 |
[RabbitMQ] 메시지 송수신 - Helloworld (0) | 2023.03.30 |