Очередь приоритетов Rabbitmq - PullRequest
1 голос
/ 28 апреля 2019

Механизм очереди приоритетов 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);
            }
 };
//... ...

производитель:

 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());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...