Während der Anfrage die Nachricht möchten wir die Nachricht am Anfang/Vorderseite der Warteschlange platziert werden. Dies bedeutet, wenn ich in Warteschlange als "D, C, B, A" und Prozess A und dann in Warteschlange beim Start zurück setzen möchte, sollte meine Warteschlange wie folgt aussehen: - "A, D, C, B" . Also sollte ich in der Lage sein, B zu verarbeiten, und da A am Anfang der Warteschlange verschoben wurde, sollte es am Ende verarbeiten.Wie man eine Nachricht mit Hilfe der Feder ampq requeued
Interessanterweise funktioniert es, wenn es mit der nativen AMQP-Bibliothek von rabbitMQ versucht wird, wie oben erwartet.
Wenn wir es jedoch durch Frühjahr AMQP-Bibliothek tun, bleibt die Nachricht, wo immer es war, geht nicht an den Anfang der Warteschlange. Hier
ist der Code, den ich versuchte:
public void onMessage(Message message, com.rabbitmq.client.Channel channel) throws Exception {
if(new String(message.getBody()).equalsIgnoreCase("A")){
System.out.println("Message = =="+new String(message.getBody()));
channel.basicReject(message.getMessageProperties().getDeliveryTag(), true);
}else{
System.out.println("Message ==="+new String(message.getBody()));
channel.basicAck(message.getMessageProperties().getDeliveryTag(), true);
}
}
Jede Idee, warum es nicht im Frühjahr funktioniert, funktioniert aber in der rabbimq AMQP native Bibliothek?
Frühling AMQP Version: spring-AMQP-1.4.5.RELEASE RabbitMQ AMQP Client-Version: 3.5.1
Siehe auch meine Bearbeitung. –