優先度キューは、その名前の通り、優先度の高いメッセージが消費される傾向があります。
RabbitMQの優先度キューに関する注意点:
- 優先度キューは、消費者が不足しており、適時な消費が行われない場合にのみ効果を発揮します。
- 優先度キューは、RabbitMQバージョン3.5以降でのみサポートされています。
RabbitMQ 優先度キューの使用手順
- キューの最大優先度を設定します。
- メッセージの優先度を設定します。
キューの最大優先度を設定する
キューを宣言する際に、キューの最大優先度を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),
})