優先度キューは、その名前の通り、優先度の高いメッセージが消費される傾向があります。

RabbitMQの優先度キューに関する注意点:

  • 優先度キューは、消費者が不足しており、適時な消費が行われない場合にのみ効果を発揮します。
  • 優先度キューは、RabbitMQバージョン3.5以降でのみサポートされています。

RabbitMQ 優先度キューの使用手順

  1. キューの最大優先度を設定します。
  2. メッセージの優先度を設定します。

キューの最大優先度を設定する

キューを宣言する際に、キューの最大優先度をqueueプロパティ(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),
	})