Forum général.cherche-logiciel *MQ

Posté par . Licence CC by-sa.
Tags : aucun
2
19
mar.
2018

Bonjour à tous,

J’ai besoin d’un outil pour gérer des jobs, mais je n’y connais pas grand chose dans le domaine. Avant de me plonger dans des tests en profondeur, j’aimerais si possible quelques retours des gens qui s’y connaissent un peu, sur ce qui serait le plus adapté.

Le besoin de base, assez classiques. Pouvoir balancer des jobs dans queue, et récupérer des jobs à faire. Les besoins, par ordre d’importance :

  • Les jobs doivent être persistents, survivre à un crash hardware
  • Les jobs ne sont pas retirés de la queue dès qu’ils sont lus, c'est le consumer qui doit pouvoir dire "traité, tu peux le retirer de la queue"/"fail, à logger et retenter plus tard"
  • Pouvoir mettre en pause une queue pendant un temps déterminé (10 secondes, 5 minutes, 3 jours…). Pas queue.pause();sleep(10);queue.start() côté consommateur, plutôt queue.pause(10);exit(0);
  • Une interface, web ou console, pour voir les jobs en cours d'exécution, les jobs en attente, les jobs échoués, quelques stats (dernier message traité) pour chaque queue
  • Assez léger en RAM, doit pouvoir tourner sur un raspberry qui a déjà d’autres services à faire tourner (au revoir les machins en Java qui veulent un serveur d’application complet)
  • Simple à installer et configurer, l’optimum serait ./myqueue --log=stdout --dbdir=jobs-db --unix-socket=queue.sock et ça tourne

Les petits plus, serait sympa mais je ne pleurerai pas si ce n'est pas là:

  • HTTP/Websocket + socket unix, pour pouvoir être reverse-proxyed
  • Un endpoint HTTP qui saurait transformer une requête en un message, par exemple un hook gitlab en job, à l’aide d’un script (JS, shell, autre, peu importe)
  • Pas de séparation consumer/producer, un job peut potentiellement soumettre d'autres jobs. Autrement dit, queue.get() and queue.push() accessibles sur le même objet queue.
  • Des APIs en NodeJS et Python

Les non-besoins (autrement dit: on s’en fiche):
* Pouvoir traiter 500000 messages par seconde
* Clustering et autres joyeusetés
* Authentification et gestion de droits sur les queues. Si le client a le droit de se connecter sur le socket, il a droit à tout

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.