Pregunta

He estado tratando de encontrar información sobre esto, pero debido a la inmadurez del marco de integración primavera no he tenido mucha suerte.

Aquí está mi flujo de trabajo deseado:

  1. Los nuevos archivos se colocan en un directorio 'entrante'

  2. Los archivos se recogieron usando un archivo: canales de entrada del adaptador

  3. El contenido del archivo se transmite, N líneas a la vez, a un 'Etapa 1' canal, que analiza la línea en un intermediario representación (compartido).

  4. Esta línea analizada se enruta a múltiples canales 'Etapa 2'.

  5. Cada 'Etapa 2' canal hace su propio procesamiento en las líneas de N disponible para convertirlos en una representación final. Este canal debe tener una cola, que garantiza que no haya Etapa 2 canales se abrumado en el caso de que uno de los canales procesos significativamente más lento que los demás.

  6. La representación final de las N líneas se escribe en un archivo. Habrá tantos archivos de salida, ya que había enrutamiento destinos en el paso 4.

** 'N' anterior corresponde a un número razonable de líneas para leer a la vez, a partir de [1, todo lo que pueda caber en la memoria razonablemente], pero se garantiza que sea siempre menor que el número de líneas en el pleno presentar. *

¿Cómo puedo lograr Streaming (pasos 3, 4, 5) en la integración de la primavera? Es bastante fácil de hacer sin la transmisión de los archivos, pero mis archivos son lo suficientemente grandes que no puedo leer el archivo en la memoria.

Como nota al margen, tengo una implementación funcional de este flujo de trabajo sin Integración primavera, pero ya que estamos utilizando Integración de Primavera en otros lugares de nuestro proyecto, me gustaría probar aquí para ver cómo se lleva a cabo y cómo el código resultante se compara para la longitud y la claridad.

¿Fue útil?

Solución

Este es un caso de uso muy interesante que lo siento me perdí durante mucho tiempo. Es, definitivamente, vale la pena crear un problema para. Por el momento tenemos el apoyo de Integración primavera para recoger los archivos y el envío de referencias a ellos alrededor. También hay algo de apoyo rudimentario para convertir los archivos a un byte [] o una cadena.

La respuesta es que ahora lo haría el paso 2 en el código Java personalizado, el envío de los pedazos de cuerpos a un canal de la etapa 2. Yo recomendaría contra el envío de referencias a las corrientes alrededor como cargas útiles de mensajes.

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