Configuration d'un noeud final pour qu'il agisse à la fois en tant que travailleur et en tant qu'abonné

StackOverflow https://stackoverflow.com/questions/1612581

  •  06-07-2019
  •  | 
  •  

Question

Est-il possible de configurer un point de terminaison pour qu'il agisse en tant qu'utilisateur récupérant les travaux d'un distributeur ET s'abonnant à un type de message?

J'ai le scénario suivant (adapté à la terminologie de vente)

*) un département central publie de temps en temps une liste des nouveaux prix. Tous les travailleurs doivent être notifiés. Cela signifie qu'un travailleur doit souscrire à cet événement.

*) quand une nouvelle commande arrive à la centrale, elle l'envoie au distributeur, qui l'envoie au prochain employé inactif à traiter. Cela signifie qu'un travailleur doit être configuré pour recevoir des messages du distributeur. J'utilise la configuration suivante:

 <MsmqTransportConfig
    InputQueue="worker"
    ErrorQueue="error"
    NumberOfWorkerThreads="2"
    MaxRetries="5"
  />

  <UnicastBusConfig
    DistributorControlAddress="distributorControlBus"
    DistributorDataAddress="distributorDataBus" >    
    <MessageEndpointMappings>
      <add Messages="Events" Endpoint="messagebus" />
    </MessageEndpointMappings>
  </UnicastBusConfig>

Lorsque je le configure uniquement en tant que travailleur ou uniquement en tant qu'abonné, tout fonctionne comme prévu, mais pas lorsque je le configure à la fois.

J'ai découvert qu'un message arrive dans la file d'attente des entrées du central avec l'adresse du distributeur comme adresse de retour au lieu de l'adresse du travailleur, et l'éditeur ne reconnaît aucun abonné dans ce cas. Des idées? Merci d'avance.

Était-ce utile?

La solution

Les travailleurs ne sont pas censés être utilisés de cette manière selon les critères IFAIK. Je pense que la meilleure solution consiste à demander aux abonnés centraux de s’abonner aux prix et au "NewOrderMessage". arrive enrichir ces données avec les prix requis (peut-être uniquement les prix des produits de cet ordre particulier) et envoyer un nouveau ProcessOrderRequest à la file d’entrée du distributeur.

Un autre moyen serait d’avoir le processus qui envoie la demande de commande pour inclure les prix dans la demande de commande.

Cela a-t-il un sens?

/ Andreas

Autres conseils

Les employés derrière un distributeur déterminent comment vous faites évoluer un seul abonné logique, et non pas comment vous gérez plusieurs abonnés logiques. Le fait est que seul un travailleur du groupe de travailleurs doit recevoir un message donné. Dans ce cas, vous souhaitez que tous les travailleurs se ressemblent pour l'éditeur, raison pour laquelle l'adresse du distributeur est indiquée.

Si vous souhaitez multiplier les abonnés logiques, attribuez à chacun d'entre eux leur propre distributeur.

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