一架梯子,一头程序猿,仰望星空!
RabbitMQ教程 > 内容正文

RabbitMQ 优先级队列(消息优先级)


优先级队列,顾名思义,优先级高的消息具备优先被消费的特权。

RabbitMQ优先级队列注意点:

  • 只有当消费者不足,不能及时进行消费的情况下,优先级队列才会生效。
  • RabbitMQ3.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,   // 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),
            })

推荐教程