2009-09-08 15 views
5

¿Es posible que varios consumidores estén escuchando en una sola instancia de MSMQ y utilicen la interfaz de consumidor selectivo para que cada uno maneje un subconjunto distinto de los mensajes? Parece que no puedo hacer que este escenario funcione correctamente usando pub/sub: un solo consumidor en la cola funciona bien, pero cuando se usan> 1 consumidores (varias instancias del mismo ejecutable) no aparecen mensajes en ninguna parte. Según entiendo, este no es el caso de los "consumidores competidores", ya que solo un solo consumidor procesará un solo mensaje.Múltiples consumidores para una sola cola en MassTransit

Cualquier ayuda o sugerencias son apreciadas.

Respuesta

2

Si está utilizando MassTransit para enviar mensajes de una cola de MSMQ, se recomienda que la cola sea local al buzón.

Dicho esto, si tiene varios procesos que están leyendo desde la misma cola con el fin de distribuir la carga del mensaje, puede utilizar la recepción selectiva para consumir solo mensajes en cada instancia que sean relevantes para ese proceso.

Por ejemplo, si tiene varias instancias de una aplicación que envía mensajes a un servicio y ese servicio responde con un mensaje correlacionado, puede suscribirse al mensaje correlacionado por identificador y solo se entregarán los mensajes suscritos. Los mensajes que no están seleccionados permanecerán en la cola hasta que sean procesados ​​por cualquiera de los procesos que estén interesados.

Debido a este patrón, se recomienda encarecidamente establecer una caducidad en el mensaje para que las respuestas ignoradas no obstruyan la cola a lo largo del tiempo.

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

Cuestiones relacionadas