Pergunta

É possível configurar um endpoint para atuar como um trabalhador a recuperação de tarefas de um distribuidor e assinar algum tipo de mensagens?

Eu tenho o seguinte cenário (adaptado para venda terminologia)

*) um Departamento Central publica a cada momento e, em seguida, uma lista dos novos preços. Todos os trabalhadores têm de ser notificadas. Isso significa que, o trabalhador deve inscrever-se a este evento.

*) quando um novo pedido chega à central, que envia para o distribuidor, que enviá-lo para o próximo trabalhador ocioso para ser processado. Isso significa que, um trabalhador tem que ser configurado para receber mensagens do distribuidor. Eu uso a seguinte configuração:

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

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

Quando eu configurá-lo apenas como um trabalhador ou apenas como um assinante tudo funciona como esperado, mas não quando eu configurá-lo como ambos.

Eu descobri que uma mensagem chega na fila de entrada da central com o endereço do distribuidor como endereço de retorno em vez do endereço do trabalhador, e a editora não reconhecem nenhuma assinante neste caso. Alguma ideia? Agradecemos antecipadamente.

Foi útil?

Solução

Os trabalhadores não devem ser usados ??dessa forma IFAIK. Eu acho que o caminho a percorrer seria ter o seu centro de subscrever os preços e quando um "NewOrderMessage" chega enriquecer esses dados com os preços exigidos (talvez apenas os preços para os produtos em que a ordem particular) e enviar uma nova ProcessOrderRequest à entrada fila do distribuidor.

Outra forma seria a de ter o processo que envia o pedido para incluir os preços do pedido de encomenda.

Isso faz algum sentido?

/ Andreas

Outras dicas

Trabalhadores por trás de um distribuidor é como você escalar um único assinante lógico, não como você lida com vários assinantes lógicas. O ponto é que apenas um único trabalhador fora da piscina de trabalhadores devem receber uma determinada mensagem, caso em que, você quer que todos os trabalhadores a procurar o mesmo para a editora -. Razão pela qual o endereço do distribuidor é dado

Se você tiver vários assinantes lógicas que pretende escalar, dar a cada um deles o seu próprio distribuidor.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top