우선순위 큐는 이름에서 알 수 있듯이 더 높은 우선순위를 갖는 메시지가 소비되는 것을 우선합니다.

RabbitMQ 우선순위 큐에 대한 주의 사항:

  • 우선순위 큐는 소비자가 충분하지 않고 적절한 시간 내에 메시지를 처리할 수 없는 경우에만 효과가 있습니다.
  • 우선순위 큐는 RabbitMQ 버전 3.5 이후에만 지원됩니다.

RabbitMQ 우선순위 큐 사용 방법

  1. 큐의 최대 우선순위 설정하기
  2. 메시지의 우선순위 설정하기

큐의 최대 우선순위 설정하기

큐를 선언할 때 큐 속성(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),
	})