Primavera AMQP: la priorità del messaggio non funziona a funzionare
-
02-01-2020 - |
Domanda
Sto usando il rabbrittemplate di Sprin Amqp per inviare e ricevere un messaggio tramite Rabbitmq.Sono in grado di inviare e ricevere messaggi, comunque, voglio allegare la priorità con il messaggio.
Ad esempio, se sto spingendo 1000 messaggi e diciamo che i messaggi numerici dispari hanno priorità 1, e anche i messaggi numero hanno priorità 0, e poi sto iniziando il mio consumatore, il consumatore dovrebbe ricevere prima i messaggi di numero dispari, quindiMessaggi numerici.
Ecco il mio codice: Produttore:
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);
}
.
Consumatore:
public MessageListener exampleListener() {
return new MessageListener() {
public void onMessage(Message message) {
//do some job
}
.
}; }
Sto facendo qualcosa di sbagliato?Qualcuno può aiutarmi a risolvere questo?
Soluzione
Prima della versione 3.5.0, Rabbitmq non supporta la priorità fuori dalla scatola .
C'è un plugin , però.
È inoltre possibile simulare la priorità utilizzando più code, ma funziona solo se il numero di messaggi ad alta priorità è piccolo, rispetto alla bassa priorità.