SQS vs RabbitMQ
je dois créer une file d'attente pour le traitement. La file d'attente elle-même est relativement peu volumineuse. Il pourrait y avoir environ 1000 écrits par heure. L'exécution de chaque tâche peut prendre environ une minute chacune, et sont traitées presque dès que l'élément est ajouté à la file d'attente.
y a-t-il une raison pour laquelle je voudrais mettre en œuvre RabbitMQ au lieu de quelque chose de standard comme Amazon SQS? Quelles sont les raisons pour lesquelles une application aurait besoin de son propre système de mise en file d'attente au lieu de quelque chose? comme SQS?
2 réponses
pour commencer, Amazon SQS est une pseudo-file d'attente qui signifie que la livraison de chaque message(s'il atteint la file d'attente) est garantie, mais pas de manière FIFO qui se produit habituellement dans une file d'attente.
si l'ordre des messages est important pour vous et que vous voulez que la file d'attente fonctionne de manière FIFO, la documentation de Amazon SQS indique de gérer cela dans votre logique d'application car les messages de Amazon SQS vous parviendront hors séquence.
par rapport à cela, pour autant que je vous savez, vous pouvez mettre en place des files d'attente de travailleurs à RabbitMQ. Si cela vous empêche d'implémenter le séquençage des messages de file d'attente au niveau de l'application, alors ce serait une option plus préférable.
Voici quelques éléments pour vous aider à décider lequel d'aller pour:
séquence des messages de file d'attente, tel que mentionné ci-dessus.
vous pouvez configurer votre propre serveur avec RabbitMQ mais pas dans le cas de Amazon SQS donc le coût est impliqué ici.
configurer votre propre serveur exigera une bonne connaissance du sujet de sorte que vous ne laissez aucun coin intact. Ce n'est pas le cas avec Amazon SQS car il est assez rapide pour commencer.
votre propre serveur RabbitMQ implique des coûts de maintenance sur la ligne, ce qui n'est pas le cas avec Amazon SQS.
Mises à jour:
- Amazon SQS supporte maintenant FIFO file.
les LP seraient ma préférence par rapport à RabbitMQ, voici pourquoi.
- LP est un service géré. Ainsi, vous n'avez pas à vous soucier des aspects opérationnels de l'exécution d'un système de messagerie, y compris l'administration, la sécurité, la surveillance, etc. Amazon le fera pour vous et vous aidera si quelque chose tourne mal.
- SQS est Élastique et peut évoluer à très grand taux et des volumes (illimité selon AWS ;))
- disponibilité des LP il y en a beaucoup de 9 et est soutenu par Amazon, qui est une chose de moins à se soucier dans votre application.
cependant RabbitMQ pourrait fournir des temps de réponse plus rapides pour puts et gets, typiquement dans 10s de milliers de TPS de mes tests. Pour que SQS puisse fournir ce type de débit, vous devrez passer à l'échelle horizontale avec plusieurs instances. Donc , si vous êtes à la recherche de moins de 5ms puts, RabbitMQ pourrait être une option à considérer parce que j'ai vu près de 20m-30ms mis Temps de mes tests SQS à 1000s de TPS, ce qui est légèrement plus élevé que RabbitMQ.
nous venons de transférer notre infrastructure de messagerie D'ActiveMQ à SQS et nous ne pouvons pas être plus heureux. Nous l'avons trouvé moins coûteux que de maintenir notre propre cluster ActiveMQ dans le nuage.
Espérons que cette aide! Laissez-nous savoir comment il va..