우선순위 큐는 이름에서 알 수 있듯이 더 높은 우선순위를 갖는 메시지가 소비되는 것을 우선합니다.
RabbitMQ 우선순위 큐에 대한 주의 사항:
- 우선순위 큐는 소비자가 충분하지 않고 적절한 시간 내에 메시지를 처리할 수 없는 경우에만 효과가 있습니다.
- 우선순위 큐는 RabbitMQ 버전 3.5 이후에만 지원됩니다.
RabbitMQ 우선순위 큐 사용 방법
- 큐의 최대 우선순위 설정하기
- 메시지의 우선순위 설정하기
큐의 최대 우선순위 설정하기
큐를 선언할 때 큐 속성(x-max-priority)을 통해 큐의 최대 우선순위를 설정합니다. 우선순위의 최대 값은 255이며, 1부터 10 사이로 설정하는 것이 권장됩니다. Golang에서 설정하기:
// 큐 속성
props := make(map[string]interface{})
// 큐의 최대 우선순위 설정
props["x-max-priority"] = 10
// 큐 선언
q, err := ch.QueueDeclare(
"tizi365.hello", // 큐 이름
true, // 큐 지속성
false, // 미사용 시 삭제
false, // 배타적
false, // No-wait
props, // 큐 속성 설정
)
팁: 다른 언어에서의 설정 방법은 유사합니다.
메시지 우선순위 설정하기
Golang에서 설정하기:
err = ch.Publish(
"tizi365", // Exchange
"", // 라우팅 키
false,
false,
amqp.Publishing{
Priority:5, // 메시지 우선순위 설정
DeliveryMode:2, // 메시지 전달 모드, 1은 비영속적, 2는 영속적
ContentType: "text/plain",
Body: []byte(body),
})