Bien, según los comentarios, aquí hay una sugerencia que se ampliará y no requiere muchos cambios en las aplicaciones.
Del lado del productor, copiaba los criterios de selección de mensajes a una propiedad de mensaje y luego publicaba el mensaje a un tema. El único cambio que se requiere aquí para la aplicación es la propiedad del mensaje. Si por algún motivo no desea publicarlo utilizando la funcionalidad nativa, puede definir un alias sobre un tema. La aplicación cree que está enviando mensajes pero en realidad son publicaciones.
En el lado del consumidor, tiene un par de opciones. Una es crear suscripciones administrativas para cada aplicación y usar un selector en la suscripción. Los mensajes se canalizan a una cola dedicada por consumidor, según los criterios de selección. Las aplicaciones piensan que simplemente están consumiendo mensajes.
Alternativamente, la aplicación puede simplemente suscribirse al tema. Esto le da la opción de una suscripción dinámica que no recibe mensajes cuando la aplicación se desconecta (si de hecho lo desea) o una suscripción duradera que es funcionalmente equivalente a la suscripción administrativa.
Esta solución se escalará fácilmente a los volúmenes que citó. Otra opción es que el productor no use propiedades.Aquí, la aplicación del consumidor consume todos los mensajes, rompe la carga del mensaje en cada uno y decide si procesar o ignorar el mensaje. En esta solución, el productor sigue publicando sobre un tema. Cualquier solución que implique cola recta obliga al productor a conocer todos los destinos. Agregue otro consumidor, cambie el productor. Además, hay un PUT para cada destino.
El peor de los casos es un productor que coloca varios mensajes y un consumidor que tiene que leer cada uno para decidir si va a ignorarlo. Esa opción puede tener problemas de escala, dependiendo de cuán profunda sea la carga útil del campo de criterios de selección. Expresión de XPath realmente larga = rendimiento deficiente y sin forma de sintonizar WMQ para compensarlo, ya que la latencia está en la aplicación en ese punto.
Mejor caso, el productor establece un mensaje de propiedad y lo publica. Los consumidores seleccionan en la propiedad en su suscripción o una suscripción administrativa hace esto por ellos. Si esta solución usa suscripciones de aplicaciones o suscripciones administrativas, no hay ninguna diferencia en lo que respecta a la escalabilidad.
¿Qué tienen de diferente los mensajes que deben ignorarse? Aquí hay varias opciones diferentes: selectores, temas, propiedades. Cuál usar depende de cómo la aplicación o QMgr distinguirían qué mensajes son relevantes. –
Hola @ T.Rob, el encabezado del mensaje para todos los 10 será el mismo, pero el contenido será diferente. Entonces podríamos mirar el encabezado para determinar si el contenido del mensaje es relevante o no. La línea de fondo es para dos de los mensajes que no queremos que uno de los suscriptores los obtenga. – scarpacci