Rabbitmq';s优先级队列

Rabbitmq';s优先级队列,rabbitmq,Rabbitmq,Rabbitmq的优先级队列机制已经过测试,只有在生产者在使用者启动之前发布消息时才会生效。如何解决这个问题 **Code snippet** 消费者: Map<String,Object> args = new HashMap<String,Object>(); args.put("x-max-priority", 10); channel.queueDeclare(TEST_PRIORITY_QUEUE, true, fa

Rabbitmq的优先级队列机制已经过测试,只有在生产者在使用者启动之前发布消息时才会生效。如何解决这个问题

**Code snippet**
消费者:

 Map<String,Object> args = new HashMap<String,Object>();
                    args.put("x-max-priority", 10);
 channel.queueDeclare(TEST_PRIORITY_QUEUE, true, false, false,args);
 //omit... ...
 DeliverCallback deliverCallback= (consumerTag, delivery) -> {
            try {
                String message = new String(delivery.getBody(), "UTF-8");
                System.out.println("message="+message);
                Thread.sleep(20*1000);
            }catch (Exception e) {
                e.printStackTrace();
            }finally {
                channel.basicAck(delivery.getEnvelope().getDeliveryTag(), false);
            }
 };
//... ...
Map args=newhashmap();
参数put(“x-max-priority”,10);
channel.queueDeclare(TEST\u PRIORITY\u QUEUE,true、false、false、args);
//省略。。。
DeliverCallback DeliverCallback=(消费者标记,交货)->{
试一试{
字符串消息=新字符串(delivery.getBody(),“UTF-8”);
System.out.println(“message=“+message”);
线程。睡眠(20*1000);
}捕获(例外e){
e、 printStackTrace();
}最后{
channel.basicAck(delivery.getEnvelope().getDeliveryTag(),false);
}
};
//... ...
制作人:

 for (int i = 0; i <20; i++) {
         String messagelow = "lowLevelMsg";
         channel.basicPublish(TEST_EXCHANGE_direct,
                              "prikey", 
                              new BasicProperties.Builder().priority(1).build(), 
                              messagelow.getBytes());
}
           String messagehigh = "HigherLevelMsg";
           channel.basicPublish(TEST_EXCHANGE_direct,
                                "prikey", 
                                new BasicProperties.Builder().priority(9).build(), 
                                messagehigh.getBytes());
for(int i=0;i