J'ai une application basée sur les services qui utilise Amazon SQS avec plusieurs files d'attente et plusieurs consommateurs. Je le fais pour pouvoir implémenter une architecture basée sur les événements et découpler tous les services, où les différents services réagissent aux changements d'état d'autres systèmes. Par exemple:
J'ai un certain nombre de problèmes:
Je suppose que ma question est la suivante: quels modèles dois-je utiliser pour m'assurer que je peux avoir plusieurs consommateurs pour une seule file d'attente dans SQS, tout en veillant à ce que les messages soient également livrés et supprimés de manière fiable. Merci de votre aide.
Je pense que vous vous trompez.
Il me semble que vous utilisez la même file d'attente pour faire plusieurs choses différentes. Il vaut mieux utiliser une seule file d'attente dans un seul but.
Au lieu de mettre un événement dans la file d'attente `` registration-new '', puis de demander à deux services différents d'interroger cette file d'attente, les DEUX ayant besoin de lire ce message et de faire quelque chose de différent avec lui (et d'avoir ensuite besoin d'un 3e processus qui est censé le supprimer) message après que les 2 autres l'ont traité).
Une file d'attente doit être utilisée dans un seul but.
Créez une file d'attente "index-user-search" et une file "send to mixpanels" pour que le service de recherche lise à partir des files d'attente de recherche, indexe l'utilisateur et supprime immédiatement le message.
Le service mixpanel lit à partir de la file d'attente mix-panels, traite le
et supprime le message.
Le service d'enregistrement, au lieu d'émettre un "enregistrement nouveau" vers une seule file d'attente, l'émet maintenant vers deux files d'attente.
Pour aller plus loin, ajoutez SNS dans le mélange ici et demandez au service d'enregistrement d'émettre un message SNS dans la rubrique 'registration-new' (pas la file d'attente), puis abonnez-vous aux deux files d'attente que j'ai mentionnées ci-dessus, à ce sujet dans un modèle de "fan-out".
https://aws.Amazon.com/blogs/aws/queues-and-notifications-now-best-friends/
Les deux files d'attente recevront le message, mais vous ne le chargez qu'une seule fois dans SNS - si en cours de route, un troisième service non lié doit également traiter les événements `` enregistrement-nouveau '', vous créez une autre file d'attente et vous y abonnez également - il peut courir sans dépendances ni connaissance de ce que font les autres services - c'est le but.