RabbitMQ - mis à jour vers une nouvelle version et obtenu beaucoup de "PRECONDITION_FAILED inconnue étiquette de livraison 1"

Juste mis à niveau vers une nouvelle version de RabbitMQ -- 2.3.1 -- et maintenant l'erreur suivante se produit:

PRECONDITION_FAILED unknown delivery tag 1  

...suivi par la fermeture d'un canal. Cela a fonctionné sur un vieux RabbitMQ avec aucune des modifications côté client.


En termes de comportement de l'application:

Lors de l'Application a veut envoyer Un message asynchrone à l'Application b et de recevoir une réponse de B, c'est l'algorithme:

  1. App générer Un IDENTIFIANT unique et le met dans l'objet du message
  2. Alors l'Application A souscrit à une nouvelle File d'attente à la fois avec le nom de file d'attente et le routage de la clé est égale à l'uuid.
  3. Application B ouvrez le message, de faire quelques calculs et de retourner le résultat de la chaîne avec la routkey qu'il a reçu.
  4. App obtient la réponse et fermer la file d'attente.

Jusqu'à présent, tout s'est très bien passé dans la version 1.7.0. ce qui s'est passé en 2.3.1?


Lors de l'Application d'Un des appels basicPublish()l'application B jette tout de suite l'exception suivante:

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,""}

source d'informationauteur Bick