Configurando um ponto de extremidade para atuar como trabalhador e assinante
-
06-07-2019 - |
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.
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.