Por favor, considere el escenario como se muestra en la imagen adjunta:El procesamiento de un mensaje tal vez
- El Portal (productor) enviará algún mensaje al bus a la que tiene que ser procesado por múltiples aplicaciones (consumidor) - PAYROLLAPP, HELPDESK etc.
- múltiples instancias de aplicaciones de consumo puede estar en ejecución, también estos casos pueden añadirse/eliminarse dinámicamente
- Ahora, es fundamental asegurarse de que el mensaje se procesa solo una vez, por aplicación es decir, si PAYROLLAPP -1 procesa el mensaje, PAYROLLAPP -2 NO debe procesarlo; por supuesto, en el diagrama de arriba , HELPDESK - 1 debe procesarlo. En resumen, en el caso de varias instancias, exactamente uno debe procesar el mensaje, una vez
- Cuando busqué las respuestas, la mayoría de las cosas se trataba de crear un 'consumidor selectivo' - un consumidor que acepta/rechaza un mensaje basado en algo de lógica: tenga en cuenta que no se pueden hacer cambios/adiciones/envolturas para las aplicaciones que se muestran en el diagrama; la lógica tiene que residir en algún lugar del proveedor que gestiona el bus
Por favor, siga más o menos lo mismo.
La adición de más detalles después de la respuesta de Petter:
- Los artículos a la a la izquierda de la línea izquierda de puntos son los 'enfoques' - JMS puros, ESB, EAI
- los artículos a la a la derecha de la línea derecha de puntos son las implementaciones ''
Ahora, la parte grandes - CONSULTAS:
- Independientemente de la solución (JMS puros, ESB, EAI), no la parte debajo de la línea de puntos (colas específicos de la aplicación) horizontales necesita a ser implementado?
- ¿Cómo funciona el uso de ESB (JBoss ESB, etc.), en lugar de JMS "puro" (Active MQ, etc.), ayuda/ ? ¿Ofrece ESB alguna ventaja sobre JMS que es 'solo java' (?). Estoy confundido - 'ESB o JMS', incluso después de referirme a hilos como estos: JMS and ESB - how they are related?. Tiene una respuesta que dice "JMS no es muy adecuado para la integración de servicios REST, sistemas de archivos, S/FTP, correo electrónico, Hessian, SOAP, etc. que son mejor manejados con un ESB que admite estos tipos de forma nativa. Por ejemplo, si tiene un proceso que vuelca un archivo CSV de 500MB a medianoche y desea que otro sistema recoja el archivo, parsee CSV e importe en una base de datos, esto puede lograrse fácilmente mediante un ESB - mientras que solución con solo JMS será mala. Del mismo modo, la integración de los servicios REST, con equilibrio de carga/ conmutación por error a múltiples instancias backend se puede hacer mejor con un ESB compatible con HTTP/S de forma nativa. "¡¡¡Solo aumentó mi confusión !!!
- ¿Es el uso de EAI framework (Apache Camel etc.) un enfoque completamente diferente del enfoque puro JMS o ESB? En caso afirmativo, ¿cómo y cuáles son los pros/contras?
- Me dijeron que ESB solo no ayudaría, BPM (¿o algo más?) Necesita ser usado para definir y almacenar la lógica de "enrutamiento" - ¿es esto cierto?
En base a las diversas entradas provistas, he decidido continuar con el enfoque de 'Destinos virtuales' de Apache ActiveMQ. Tengo algunas dudas al respecto, pero se publicarán en un hilo separado. ¡Gracias a todos por la ayuda y orientación! –