优先级队列,具有高优先级的队列具有高的优先权,优先级高的消息具备优先被消费的特权.
可以通过设置队列的x-max-priority参数来实现。
Map<String,Object> args = new HashMap<String,Object>();
args.put("x-max-priority",10);
channel.queueDeclare("queue.priority",true,false,false,args);
设置消息当前的优先级:
AMQP.BasicProperties.Builder builder = new AMQP.BasicProperties.Builder();
builder.priority(5);
AMQP.BasicProperties properties = builder.build();
channel.basicPublish("exchange_priority","rk_priority",properties,"message".getBytes());
上面代码设置消息的优先级为5,默认最低为0,最高为队列设置的最大优先级。优先级高的消息可以被优先消费,这个也是有前提的:如果在消费者的消费速度大于生产者的速度,且Broker中没有消息堆积的情况下,对发送的消息设置优先级没有意义。因为生产者刚发完一条消息就被消费者消费了。