Rabbitmq ou Gearman – choisir une queue des travaux

Au travail, nous devons créer un serveur de tâches pour l’envoi de courriers électroniques, la création de fichiers PDF, le traitement de certaines données, etc. Évidemment, nous aimerions développer un système de queue générique. Je suis familier avec Gearman, et c’est le problème exact qu’il essaie de résoudre: placer des travaux dans une queue où les travailleurs viennent les chercher. Cependant, je vois beaucoup de mentions de Rabbitmq et je ne sais pas comment il est utilisé dans ce scénario.

Est-ce que Rabbitmq est un bon cadre pour construire un système de tâches dissortingbué en plus?

Je dirais que Gearman est mieux pour faire la queue “jobs” et RabbitMQ est meilleur pour la mise en queue des “données”. Bien sûr, ils sont tous les deux vraiment la même chose, mais la façon dont cela fonctionne pour moi est que si vous essayez de «répartir» le travail à faire et que les travailleurs peuvent travailler de manière autonome, Gearman est la meilleure façon de le faire. . Mais si vous essayez de transformer des données provenant de nombreuses sources en un nombre inférieur de consommateurs de données, RabbitMQ est la meilleure solution.

L’histoire de RabbitMQ, qui permettait à Twitter de prendre des tonnes de messages volumineux et de les transmettre à d’anciennes passerelles SMS croustillantes qui ne permettaient qu’une seule connexion, était limitée et ne nécessitait aucune nouvelle tentative. RabbitMQ est bon pour résoudre.

Tout dépend de la sémantique que vous souhaitez exposer. Il est très facile de faire ce que Gearman fait en plus de RabbitMQ, qui peut certainement «diffuser» les messages aux travailleurs indépendants.

Mais Gearman est construit à cet effet. IIUC, Gearman est un cadre pour le traitement des tâches et non un système de messagerie en tant que tel. Il existe d’autres frameworks tels que Celery qui utilisent RabbitMQ sous le capot pour cela. Voici un article sur le céleri qui mérite d’être lu.