RabbitMQ 之优先级队列

2019-07-21  本文已影响0人  _大叔_

设置优先级分为两步:先给队列设置优先级,其次给消息设置优先级。

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 中至多只有一条消息,对于单 条消息来说优先级是没有什么意义的。

上一篇下一篇

猜你喜欢

热点阅读