rabbitmq設置消費者優先


1、多消費者的時候,mq的調試很麻煩!因為dev,local環境的消費者也會消費rabbitmq的消息,一般的辦法是多發幾次

優先消費者

rabbitmq3.2以上可以對消費者進行排序。

springboot方案

對於springboot工程@RabbitListener,里面有一個參數priority,這個是配置消費者的優先級,默認為0,數值越大優先級越高。

@RabbitListener(queues="${xxQueueName}",containerFactory = "xxxContainerFactory",priority = "3")
public void onMessage(Message message,Channel channel) throws Exception {
	try catch finally
}

原生api方案

如果不是使用springboot工程,用原生的api,可以在創建消費者的時候傳入參數x-priority


 Map<String, Object> map = new HashMap<>();
        map.put("x-priority",5);
        channel.basicConsume("queueName",true,map,new DefaultConsumer(channel){
            @Override
            public void handleDelivery(String consumerTag,
                                       Envelope envelope,
                                       AMQP.BasicProperties properties,
                                       byte[] body)
                    throws IOException {
            }
        });

注意點

1.消費者的優先級設定是通過建立消費的basicConsume的時候設定的arguements的x-priority

2.當高優先級的消費者未出現阻塞或者限制的時候,那么低優先級的消費者是不能拿到消息的

3.當高優先級的消費者出現阻塞等其他限制的情況的時候,消息才會發向給低優先級的消費者

4.對於是否設定消費者優先級需要按照需求進行設定,如果盲目添加可能導致其他消費者拿不到消息!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM