Pregunta

¿Existen buenas prácticas para el procesamiento de mensajes o peticiones / respuestas que tratan con grandes cantidades de datos (MBytes? GBytes?) A través de un middleware o un sistema EAI, assunming que los transportes de middleware, pero no procesa las enormes manchas de datos?

  • transportar los datos con el mensaje con el fin de mantener la coherencia, pero probablemente varias veces copiar grandes cantidades de datos entre sistemas

  • Mantener los datos en un almacén o repositorio de datos (sistema de archivos, bases de datos, ...) y transportar una referencia a los datos, sin embargo perder el estrecho acoplamiento entre el mensaje y los datos

¿Cuál es la solución común a este problema? ¿Cómo es esto apoyado por EAI o middleware productos?

¿Fue útil?

Solución

En mi experiencia, es bueno para limitar el tamaño de los mensajes. En los ambientes que conozco (WebSphere MQ, SonicMQ) encontré 5-10 MB Un buen valor para la mayoría de los mensajes. En muchos casos no se pierde nada con tener muy pocos mensajes con tamaños de hasta 100 MB -> pero no tendrá que pensar en el consumo de memoria, .... En la mayoría de las API de mensajería, especialmente JMS que al menos tendrá el mensaje completo en la memoria de un tiempo, lo que puede causar que algunos dolores de cabeza cuando se inicia el procesamiento en paralelo.

Hay dos cosas que usamos como una solución:

  • utilizar el patrón de secuencia de mensajes con algunas adiciones: mayormente enviamos un gatillo que contiene una referencia de todos los números de secuencia de asegurar la finalización
  • enviar un "link" a los datos

Normalmente utilizamos la primera solución cada vez que los mensajes contienen datos estructurados, el segundo se utiliza en los casos de distribución de medios.

En la primera solución nosotros también tienden a no utilizar proporciona soluciones específicas, pero implementar esta lógica en nuestra implementación personalizada -. Para ello no estamos sujetos a un sistema de mensajería específica

Otros consejos

Si es práctico para realizar una conexión directa entre el sistema de origen y destino a continuación, enviar sólo una referencia a través de un mensaje para iniciar la transferencia funciona, pero, como usted señaló a perder el acoplamiento débil.

De acuerdo con los patrones de integración de libros de la empresa podría implementar las href="http://www.eaipatterns.com/MessageSequence.html" mensaje patrón de secuencia .

En mi experiencia con los sistemas de EAI como TIBCO. Es más o menos depende de usted para averiguar cómo manejar nuestro arbitrariamente grandes cantidades de datos.

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