J'utilise Apache Camel avec ActiveMQ et je souhaite mettre en place une livraison garantie des messages. Je lisais le livre Camel in Action ainsi que le livre de recettes du développeur Apache Camel. J'espère que quelqu'un ici pourra me conseiller dans mon approche. Je ne demande pas d'échantillons de code.Livraison garantie en Camel
La façon dont j'envisagé la mise en œuvre est la suivante:
1. Message is received on an endpoint
2. I inspect the message
3. I use the Wiretap pattern to drop it immediately on my "GuaranteedMessages" queue if the message asks for guaranteed delivery
4. I route the message to its proper destination
5. If no exceptions were encountered, I remove the message manually from the "GuaranteedMessages" queue
Cela semble assez facile. Cependant, j'ai lu sur le modèle "Dead Letter Channel" dans Camel. Si je comprends bien, l'implémentation de ce modèle implique qu'au lieu de déposer automatiquement chaque message (garanti) dans ma file d'attente "GuaranteedMessages", j'abandonne cette approche et je règle les options de relivraison (tentatives max, délai exponentiel, délai de relivraison , etc.). Ensuite, je compte sur Camel pour essayer de relancer et je l'abandonne simplement dans le délai de canal de lettre morte s'il ne passe jamais. Ensuite, j'aurais une route séparée qui utilise cette file d'attente de lettres mortes comme source. Encore une fois, ce serait le même modèle. Si cela ne réussit pas, renvoyez le message à la file d'attente des lettres mortes.
Cela ressemble-t-il à une implémentation réaliste pour un système de production? Si à la place, je décide de supprimer chaque message entrant (qui doit être garanti) dans ma propre file d'attente "GuaranteeMessage", est-il réaliste de penser que je pourrai ultérieurement retirer manuellement ce message de la file d'attente? Ma compréhension est que je devrais parcourir manuellement la file d'attente, itérer à travers un certain nombre de messages, puis consommer ce message manuellement. Je ne suis pas sûr à quel point une telle architecture est vraiment évolutive.