RabbitMQ - auf eine neue version aktualisiert und bekam eine Menge von "PRECONDITION_FAILED unbekannten Lieferung-tag 1"
Nur ein Upgrade auf eine neue version von RabbitMQ -- 2.3.1 -- und nun tritt folgender Fehler auf:
PRECONDITION_FAILED unknown delivery tag 1
...gefolgt von der Kanal schließen. Dieser arbeitete auf einem älteren RabbitMQ mit der client-Seite keine änderungen.
In Bezug auf das Verhalten der Anwendung:
Wenn App A will senden einer asynchronen Nachricht an App b und erhalten eine Antwort von B, dies ist der Algorithmus:
- App generiert eine eindeutige ID und speichert Sie in der message-Objekt
- Dann Eine App abonniert, um eine neue Warteschlange mit dem Warteschlangen-Namen und routing-key gleich auf die uuid.
- App B öffnen Sie die Nachricht, einige Berechnungen durchzuführen und das Ergebnis an den Kanal mit der routkey, die es erhielt.
- App Ein, bekommt die Antwort, und schließen Sie die Warteschlange.
Bisher lief eigentlich alles gut in der 1.7.0. was ging schief in 2.3.1?
Wenn Eine Anwendung ruft basicPublish()
Anwendung B sofort wirft Sie die folgende Ausnahme:
com.rabbitmq.client.ShutdownSignalException: channel error; reason: {#method<channel.close>(reply-code=406,reply-text=PRECONDITION_FAILED - unknown delivery tag 1,class-id=60,method-id=80),null,""}
at com.rabbitmq.client.impl.ChannelN.processAsync(ChannelN.java:191)
at com.rabbitmq.client.impl.AMQChannel.handleCompleteInboundCommand(AMQChannel.java:159)
at com.rabbitmq.client.impl.AMQChannel.handleFrame(AMQChannel.java:110)
at com.rabbitmq.client.impl.AMQConnection$MainLoop.run(AMQConnection.java:438)
Caused by: com.rabbitmq.client.ShutdownSignalException: channel error; reason: {#method<channel.close>(reply-code=406,reply-text=PRECONDITION_FAILED - unknown delivery tag 1,class-id=60,method-id=80),null,""}
InformationsquelleAutor der Frage Bick | 2011-02-22
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nur der Code, die verursachen können, die Ausnahme ist durch den broker Umgang mit einem " basic.ack', so klingt wie ein client-Problem; überprüfen Sie den client-code.
Prüfen Sie insbesondere, dass Sie nicht mit einem ack ' Ing-Nachrichten mehr als einmal. Dies ist in Verletzung des AMQP 0-9-1 spec:
Ein großartiger Ort, solche Fragen zu stellen ist das rabbitmq-diskutieren mainling-Liste; alle RabbitMQ-Entwickler gelesen, dass die Liste und machen Sie einen Punkt der nicht so dass Fragen offen.
Es ist auch erwähnenswert, dass in vorherigen Versionen von Rabbit wurden mehr lasch und hat nicht einen Fehler auslösen, in diesem Fall, aber neuere Versionen.
InformationsquelleAutor der Antwort scvalex
Setzen Sie einfach
noAck: false
aufBasicConsume
MethodeInformationsquelleAutor der Antwort AuthorProxy