2009-11-13 2 views
1

Je lisais sur ActiveMQ qui semble être une excellente implémentation d'un servicebus où les producteurs peuvent poster des messages et d'autres processus peuvent les recevoir.existe-t-il une solution servicebus où les consommateurs ne consomment pas d'événements? (plusieurs consommateurs reçoivent le même événement)

Toutefois, lors de la lecture de la documentation, il semble que le producteur doit indiquer le «point de terminaison» lors de l'envoi d'un message. Je préfère l'avoir dans l'autre sens: Mon producteur poste les événements 'import job starting', 'import job finished', etc et tout consommateur qui est intéressé par certaines classes d'événements peut s'abonner et les recevoir. Cependant, le consommateur ne devrait pas consommer l'événement en ce sens qu'il ne sera plus envoyé aux autres abonnés.

Quel serait le meilleur produit pour avoir ce type de propriété?

Contraintes: - Il devrait avoir des interfaces pour au moins .Net et PHP - Il devrait fonctionner à travers les frontières de la machine

Merci

Répondre

2

Je pense que vous publiez actuellement dans une file d'attente, ce qui signifie généralement que 1 consommateur consommerait le message et que l'événement serait traité. Si vous devez avoir plus d'un consommateur recevant les événements, vous devez utiliser des rubriques. Lorsque vous utilisez des rubriques, tous les consommateurs abonnés reçoivent l'événement que vous avez publié.

Jetez un oeil à ceci: http://activemq.apache.org/how-does-a-queue-compare-to-a-topic.html

+0

Génial! Je n'aurais jamais deviné qu'une telle fonctionnalité serait appelée un sujet. Merci – Toad

0

Je ne sais pas le meilleur, mais je D-Bus utilisés dans le projet où était une tâche comme la tienne. Vérifiez sa documentation.

Références aux implémentations:

C# implementation of D-Bus

Binding of PHP and DBus

J'espère que ce wuill aide.

+0

Si je lis correctement cela, cela ne fonctionne pas à travers les limites de la machine. Je vais modifier mon message d'origine pour ajouter cette contrainte – Toad

+0

Il fonctionne à travers les limites de la machine. D-Bus peut fonctionner sur TCP/IP. – bniwredyc

0

Si vous êtes ok d'avoir le service hébergé sur le nuage, ce scénario permet Microsoft's ServiceBus à travers son modèle Sujet/d'abonnement. Selon ce modèle, votre producteur envoie un message au sujet (une file d'attente à toutes fins pratiques), et toute personne qui s'y est abonnée recevra une copie du message. Pour des scénarios plus avancés, vous pouvez même créer des règles et des filtres pour définir quels clients obtiennent quels messages. Il existe à la fois des API .NET et REST pour cela. Vous pouvez vérifier une écriture complète des capacités here. Le document inclut un exemple de code sur la façon d'utiliser les bibliothèques client pour cela. Il ya aussi samples sur la façon d'utiliser servicebus avec Java et PHP, au cas où vous avez besoin de soutien pour ces langues.

Questions connexes