Question

Est-il possible d'avoir plusieurs consommateurs écoute sur une seule instance MSMQ et utiliser l'interface de consommation sélective pour avoir chacun accord avec un sous-ensemble distinct des messages? Je ne peux pas sembler obtenir que ce scénario fonctionne correctement avec pub / sous - un consommateur unique sur la file d'attente fonctionne très bien, mais lors de l'utilisation> 1 consommateurs (plusieurs instances du même exécutable) aucun message apparaît nulle part. Si je comprends bien, ce n'est pas le cas des « consommateurs concurrents », puisque seul un consommateur unique traitera un seul message.

Toute aide ou pointeurs sont appréciés.

Était-ce utile?

La solution

Si vous utilisez MassTransit pour envoyer des messages à partir d'une file d'attente MSMQ, il est recommandé que la file d'attente est à la boîte locale.

Cela étant dit, si vous avez plusieurs processus qui sont en train de lire la même file d'attente aux fins de répartition de la charge de message, vous pouvez utiliser le sélectif reçoivent seulement consommer des messages dans chaque instance qui sont pertinentes à ce processus.

Par exemple, si vous avez plusieurs instances d'une application qui envoient des messages à un service et que le service répond par un message corrélé, vous pouvez vous abonner au message corrélé par identifiant et seuls les messages abonnés seront livrés. Les messages qui ne sont pas sélectionnés resteront dans la file d'attente jusqu'à leur traitement par l'un des processus qui sont intéressés.

En raison de ce modèle, il est fortement recommandé que l'expiration est fixé sur le message des réponses si ignorés ne bouchent la file d'attente au fil du temps.

Ce scénario est assez commun lors de la réplication d'un modèle de demande / réponse par messagerie.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top