Rabbitmq Spring AMQP:消息优先级不工作

Rabbitmq Spring AMQP:消息优先级不工作,rabbitmq,spring-amqp,Rabbitmq,Spring Amqp,我使用sprinamqp的rabbitmplate通过RabbitMQ发送和接收消息。我能够发送和接收消息,但是,我想优先处理消息 e、 g,如果我推送1000条消息,假设奇数条消息的优先级为1,偶数条消息的优先级为0,然后我启动我的消费者,那么消费者应该首先接收奇数条消息,然后接收偶数条消息 这是我的密码: 制作人: public void sendMessage(int i) throws IOException { Record r = new Record(); r.se

我使用sprinamqp的rabbitmplate通过RabbitMQ发送和接收消息。我能够发送和接收消息,但是,我想优先处理消息

e、 g,如果我推送1000条消息,假设奇数条消息的优先级为1,偶数条消息的优先级为0,然后我启动我的消费者,那么消费者应该首先接收奇数条消息,然后接收偶数条消息

这是我的密码: 制作人:

public void sendMessage(int i) throws IOException {
    Record r = new Record();
    r.setFrom((i + 1));
    r.setTo("infoimage");
    r.setMessage("Hi Pritish.");
    MessageProperties prop = new MessageProperties();
    prop.setPriority(i%2);
    byte[] rByte = serialize(r);
    Message m = new Message(rByte, prop);
    rabbitTemplate.convertAndSend(queueName, m);
}
消费者:

public MessageListener exampleListener() {
    return new MessageListener() {
        public void onMessage(Message message) {
     //do some job
     }
}); }


我做错什么了吗?有谁能帮我解决这个问题吗?

3.5.0版之前的RabbitMQ

不过,有


您也可以通过使用多个队列来模拟优先级,但只有在高优先级消息的数量比低优先级消息的数量少的情况下,这才真正起作用。

事实上,通过额外队列模拟优先级也适用于大量消息,但除非您有额外的资源,否则这样做没有意义(比如,在更多专用服务器上)处理高优先级消息。同意-我的观点是“低”如果高优先级队列较深,优先级消息仍可能在高优先级之前处理。如果您有1000个高优先级和1个低优先级,则它将在最后一个高优先级之前处理。如果相反,则单个高优先级将(可能)在不超过一个或两个低优先级之后进行处理。很好的解释。这消除了我的疑虑。我对不同的代理进行了研究。Apache ActiveMQ支持优先级队列,并尝试使用spring实现它。根据我的要求,它以某种方式适合。感谢大家的快速评论。对于未来的读者:“从RabbitMQ 3.5.0开始,优先级队列集成到代理中;不再需要插件。”