Domanda

È possibile configurare un endpoint in modo che agisca come un lavoratore che recupera i lavori da un distributore E si abbona a qualche tipo di messaggio?

Ho il seguente scenario (adattato alla terminologia di vendita)

*) un dipartimento centrale pubblica ogni tanto un elenco dei nuovi prezzi. Tutti i lavoratori devono essere avvisati. Ciò significa che un lavoratore dovrebbe iscriversi a questo evento.

*) quando un nuovo ordine arriva alla centrale, lo invia al distributore, che lo invia al successivo lavoratore inattivo per l'elaborazione. Ciò significa che un lavoratore deve essere configurato per ricevere messaggi dal distributore. Uso la seguente configurazione:

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

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

Quando lo configuro solo come lavoratore o solo come abbonato tutto funziona come previsto, ma non quando lo configuro come entrambi.

Ho scoperto che un messaggio arriva alla coda di input della centrale con l'indirizzo del distributore come indirizzo di ritorno anziché l'indirizzo di lavoro, e l'editore non riconosce alcun abbonato in questo caso. Qualche idea? Grazie in anticipo.

È stato utile?

Soluzione

I lavoratori non devono essere utilizzati in questo modo IFAIK. Penso che la strada da percorrere sarebbe quella di avere il tuo abbonamento centrale ai prezzi e quando un " NewOrderMessage " arriva arricchisce quei dati con i prezzi richiesti (forse solo i prezzi dei prodotti in quel particolare ordine) e invia un nuovo ProcessOrderRequest alla coda di input del distributore.

Un altro modo sarebbe quello di avere il processo che invia la richiesta d'ordine per includere i prezzi nella richiesta d'ordine.

Ha senso?

/ Andreas

Altri suggerimenti

I lavoratori dietro un distributore sono il modo in cui ridimensionate un singolo abbonato logico, non il modo in cui gestite più abbonati logici. Il punto è che solo un singolo lavoratore fuori dal gruppo di lavoratori dovrebbe ricevere un determinato messaggio, nel qual caso, vuoi che tutti i lavoratori abbiano lo stesso aspetto per l'editore, motivo per cui viene fornito l'indirizzo del distributore.

Se si dispone di più abbonati logici che si desidera ridimensionare, assegnare a ciascuno di essi il proprio distributore.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top