RabbitMQ优先级队列

优先级队列,具有高优先级的队列具有高的优先权,优先级高的消息具备优先被消费的特权.

可以通过设置队列的x-max-priority参数来实现。

Map args = new HashMap();
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中没有消息堆积的情况下,对发送的消息设置优先级没有意义。因为生产者刚发完一条消息就被消费者消费了。

你可能感兴趣的:(#,消息队列)