我正在使用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
}
}; }
我做错了吗?有人可以帮我解决这个问题吗?
答案 0 :(得分:6)
在3.5.0版之前,RabbitMQ doesn't support priority out of the box。
虽然有a plugin。
您还可以使用多个队列来模拟优先级,但只有当优先级较低的消息数量较少时,才会真正起作用。