Pregunta

¿Es posible configurar un punto final para que actúe como un trabajador que recupera trabajos de un distribuidor Y se suscribe a algún tipo de mensajes?

Tengo el siguiente escenario (adaptado a la terminología de venta)

*) un departamento central publica de vez en cuando una lista de los nuevos precios. Todos los trabajadores tienen que ser notificados. Eso significa que un trabajador debe suscribirse a este evento.

*) cuando llega un nuevo pedido a la central, lo envía al distribuidor, que lo envía al siguiente trabajador inactivo para que sea procesado. Eso significa que un trabajador debe estar configurado para recibir mensajes del distribuidor. Yo uso la siguiente configuración:

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

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

Cuando lo configuro solo como trabajador o solo como suscriptor, todo funciona como se espera, pero no cuando lo configuro como ambos.

Descubrí que un mensaje llega a la cola de entrada de la central con la dirección del distribuidor como dirección de retorno en lugar de la dirección del trabajador, y el editor no reconoce ningún suscriptor en este caso. ¿Algunas ideas? Gracias de antemano.

¿Fue útil?

Solución

Se supone que los trabajadores no deben utilizarse de esa manera IFAIK. Creo que el camino a seguir sería que su central se suscriba a los precios y cuando aparezca un " NewOrderMessage " los datos enriquecen esos datos con los precios requeridos (quizás solo los precios de los productos en ese orden en particular) y envían un nuevo ProcessOrderRequest a la cola de entrada del distribuidor.

Otra forma sería tener el proceso que envía la solicitud de pedido para incluir los precios en la solicitud de pedido.

¿Eso tiene algún sentido?

/ Andreas

Otros consejos

Trabajadores detrás de un distribuidor es cómo escalar un único suscriptor lógico, no cómo manejar múltiples suscriptores lógicos. El punto es que solo un trabajador del grupo de trabajadores debe recibir un mensaje dado, en cuyo caso, desea que todos los trabajadores se parezcan al editor, por lo que se proporciona la dirección del distribuidor.

Si tiene varios suscriptores lógicos que desea escalar, dé a cada uno su propio distribuidor.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top