设置优先级分为两步:先给队列设置优先级,其次给消息设置优先级。
1.队列设置优先级:
Map<String,Object> args = new HashMap() ;
args.put( "x-rnax-priority" , 10) ;
channel.queueDeclare( " queue.priority" , true , fa1se , false , args) ;
2.消息设置优先级:
AMQP.BasicProperties.Bui1der builder = new AMQP.BasicProperties.Builder() ;
builder.priority(5) ;
AMQP.BasicProperties properties = builder.buiild () ;
channel.basicPub1ish( " exchange_priority" , " rk_priority" , properties, ("messages " ) . getBytes () ) ;
上面的代码中设置消息的优先级为5 。默认最低为0,最高为队列设置的最大优先级(以上我们是10)。优先 级高的消息可以被优先消费,这个也是有前提的:如果在消费者的消费速度大于生产者的速度且Broke 中没有消息堆积的情况下,对发送的消息设置优先级也就没有什么实际意义。因为生 产者刚发送完一条消息就被消费者消费了,那么就相当于 Broker 中至多只有一条消息,对于单 条消息来说优先级是没有什么意义的。
网友评论