一、核心特点
·优先级范围:支持0-255共256个优先级级别,数字越大优先级越高。
·内存排序:所有消息在内存中按优先级排序,可能增加内存消耗。
·性能影响:排序操作会带来额外的 CPU 开销。
·混合模式:可与持久化、TTL 等特性组合使用。
二、应用场景
·紧急任务处理:如电商系统中的订单取消请求(高优先级)应优先于普通订单(低优先级)处理。
·告警系统:不同级别的告警消息(如 CRITICAL > WARNING > INFO)需要差异化处理。
·VIP 客户服务:为高级别客户的消息分配更高优先级。
·资源调度:重要后台任务优先获取计算资源。
三、约束与限制
仅开源托管版集群支持配置优先级队列,Serverless 版集群暂不支持。
四、配置队列的消息优先级范围
在创建 Queue 时,在其他高级选项中设置队列中消息的优先级最大值。具体步骤请参考创建 Queue。
·配置该队列中的消息的最大优先级,可选范围:[0,255],值越大,排序开销越高。
·配置该参数后将启用优先级功能,生产者发送消息时通过 priority 属性指定优先级(0到 Maximum Priority 之间)。高优先级消息会优先被消费,未设置优先级的消息默认为 0。
五、发送优先级消息
以 Java 客户端为例,发送带优先级属性(priority)的消息。
// 创建带优先级的消息属性AMQP.BasicProperties properties = new AMQP.BasicProperties.Builder() .priority(5) // 设置优先级为5(范围0-255) .deliveryMode(2) // 持久化消息 .build();// 发送消息channel.basicPublish( "exchange.direct", // 交换机名称 "priority.routing", // 路由键 properties, // 消息属性 "重要订单数据".getBytes() // 消息体);