2010-05-27 18 views
0

J'ai besoin d'un système de type de file d'attente de travail simple pour la gestion de tâches asynchrones.Meilleur service de file d'attente de travail pour les clusters distribués

J'ai examiné à la fois beanstalkd et gearman. Cependant, les deux semblent supposer que le client et le serveur de file d'attente sont sur le même réseau, et donc qu'il y aura toujours un réseau fiable entre eux.

J'ai besoin d'une solution capable de supporter le client et le serveur à différents endroits dans le monde, et capable de gérer la perte temporaire de connexion réseau entre les clusters.

Idéalement, cela fonctionnerait de telle manière que je poste un travail sur un proxy local qui tente de l'envoyer au serveur de file d'attente principal. S'il n'y a pas de connexion réseau, il réessayera plus tard, mais il ne perdra pas le travail ou ne retardera pas le client.

Des recommandations?

Répondre

-1

Essayez ActiveMQ. Les bibliothèques clientes (peu importe si elles envoient ou consomment des messages) sont assez intelligentes pour se reconnecter automatiquement sur les pannes de réseau, les redémarrages du serveur, etc. Pour moi, cela fonctionne bien sur mon réseau local et avec quelques machines connectées sur VPN. J'utilise Apache NMS en tant que bibliothèque client pour .NET et instance de courtier ActiveMQ unique.

Il dispose également du support HTTP, mais je n'ai pas encore essayé, je ne sais pas si le support de reconnexion est le même.

Il est également possible d'exécuter plusieurs courtiers (serveurs) pour la mise en cluster et l'équilibrage de charge, appelé "réseau de courtiers". Les courtiers peuvent même s'asseoir derrière un pare-feu. Pourrait être une option pour vous si vous avez un grand nombre de producteurs/consommateurs dans plus d'un endroit.