我正在使用Sprin AMQP的rabbittemplate通过RabbitMQ发送和接收消息.我能够发送和接收消息,Howver,我想用消息附加优先级.
例如,如果我正在推送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 不支持开箱即用的优先级.
但是有一个插件.
您还可以通过使用多个队列来模拟优先级,但只有在高优先级消息的数量较少时才会真正起作用,与低优先级相比.