2017-10-17 7 views
1

J'ai une application avec RabbitMQ au backend. Je veux donc développer un code d'analyse tiers personnalisé qui connecte les files d'attente d'applications sur RabbitMQ et collecter des données. Donc, mon problème est que je veux être sûr que l'application et mon code ne perdent aucune donnée de rabbitmq.voulez exécuter plusieurs consommateurs sur la même file d'attente RabbitMQ

Si c'est possible, comment puis-je configurer les files d'attente RabbitMQ? J'ai un accès administratif sur RabbitMQ. J'espère que ce n'est pas le code de problème de producteur parce que je n'ai pas accès au code d'application

Merci pour votre aide

Répondre

0

Modifier l'échange en cours/mappage de file d'attente pour permettre la réplication des messages

A le moment où nous pouvons simplifier ce producteur existant envoie un message à l'échange existant, qui achemine le message à une file d'attente, à partir de laquelle les messages sont maintenant consommés:

[producer-app] ---> existing-exchange ---> existing-queue ---> [existing-consumer] 

Maintenant, ce que vous voulez avoir une conception suivante, avec de nouveaux consommateurs consomment les mêmes messages:

[producer-app] ---> existing-exchange ---> existing-queue ---> [existing-consumer] 
             \--> new-queue --------> [your-consumer] 

Vous devrez peut-être modifier la configuration de existing-exchange pour permettre la réplication de votre message - par exemple direct et fanout créera le même message sur chacune des files d'attente.

En fonction de votre application, il peut être assez facile à réaliser sans changements dans le producteur, mais vous devez être conscient des pièges possibles:

  • producteur pourrait re-déclarer les échanges/files d'attente/liaisons de temps en temps , et jeter des exceptions si l'état actuel ne peut pas être changé à sa demande (cela peut arriver si vous changez le type d'échange)
  • vous devez gérer le new-queue par vous-même (de préférence à partir de votre artefact de consommateur), car il va recevoir tous les messages; dans le cas où votre consommation arrête, la file d'attente ne va pas disparaître si elle est faite exclusive ou a TTL fixé
+0

Bonjour Adam Avez-vous d'exemple de configuration de votre recommandation basée sur l'art ascii. Je n'ai pas pu obtenir de longs temps d'arrêt pour cet environnement, donc je dois appliquer la bonne solution dans une petite fenêtre – user984074