Pregunta

¿Es posible tener varios consumidores que escucha en una sola instancia de MSMQ y utilizar la interfaz del consumidor selectivo por tener cada uno trato con un subconjunto distinto de los mensajes? Me parece que no puede conseguir este escenario para que funcione correctamente usando pub / sub - un solo consumidor en la cola de bien funciona, pero cuando se utiliza> 1 consumidores (varias instancias del mismo ejecutable) no aparecerán mensajes en cualquier lugar. Como yo lo entiendo, este no es el caso de los consumidores de la competencia ', ya que sólo un único consumidor procesará un solo mensaje.

Cualquier ayuda o punteros son apreciadas.

¿Fue útil?

Solución

Si está utilizando MassTransit a los mensajes de despacho de una cola de MSMQ, se recomienda que la cola es local a la caja.

Una vez dicho esto, si tiene varios procesos que se están leyendo de la misma cola a los efectos de la distribución de la carga de mensajes, puede utilizar los selectivos recibir a consumir solamente los mensajes en cada instancia que son relevantes para ese proceso.

Por ejemplo, si tiene varias instancias de una aplicación que los mensajes Enviar a un servicio y que responde con un mensaje de servicio correlacionada, puede suscribirse al mensaje correlacionado por identificador y serán entregados sólo aquellos mensajes suscritas. Los mensajes que no están seleccionados permanecerán en la cola hasta procesada por cualquiera de los procesos que están interesados.

Debido a este patrón, es muy recomendable que una caducidad se establece en el mensaje de respuesta de modo ignorados no obstruyen la cola con el tiempo.

Este escenario es bastante común al replicar un patrón de solicitud / respuesta a través de mensajería.

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