优先级队列,顾名思义,优先级高的消息具备优先被消费的特权。
RabbitMQ优先级队列注意点:
- 只有当消费者不足,不能及时进行消费的情况下,优先级队列才会生效。
- RabbitMQ3.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, // delete when unused
false, // exclusive
false, // no-wait
props, // 设置队列属性
)
提示:其他语言设置方式类似。
设置消息优先级
Golang设置方式:
err = ch.Publish(
"tizi365", // 交换机
"", // 路由参数
false,
false,
amqp.Publishing{
Priority:5, // 设置消息优先级
DeliveryMode:2, // 消息投递模式,1代表非持久化,2代表持久化,
ContentType: "text/plain",
Body: []byte(body),
})