Camel recipienteLista no iterando todos los destinatarios

Estoy escribiendo una integración Camel que puede consumir un número arbitrario de consultas y ejecutarlas contra un número arbitrario de bases de datos.

La ruta comienza obteniendo todas las consultas ubicadas en una carpeta y luego usa un divisor para iterar sobre ellas en orden:

from("quartz2:quartzInitializer?cron={{sync.cron}}")
    .routeId("quartzInitializer")
    .bean(QueryHandler.class, "getQueries")
    .split(exchangeProperty(QueryHandler.Properties.QUERIES))
        .setProperty(Properties.CURRENT_QUERY, simple("body"))
        .to("direct:executeSingleQuery")
    .end();

En el fragmento anterior, la propiedad QueryHandler.Properties.QUERIEScontiene dos ubicaciones de archivo de consulta:

config/sql/1__select_stat_machine.sql
config/sql/2__select_stat_session.sql

A continuación, envío la ubicación de la consulta iterada y construyo una lista de destinatarios a partir de ella:

from("direct:executeSingleQuery")
    .routeId("executeSingleQuery")
    .bean(DataSourceHandler.class, "createEndpointsWithQuery")
    .recipientList(exchangeProperty(DataSourceHandler.Properties.QUERY_RECIPIENTS))
        .parallelProcessing()
    .log(LoggingLevel.INFO, String.format("Calling ${in.header.%s}", Exchange.RECIPIENT_LIST_ENDPOINT));

En el fragmento anterior, el parámetro DataSourceHandler.Properties.QUERY_RECIPIENTScontiene dos destinatarios:

sql:file:config/sql/1__select_stat_machine.sql?dataSource=datasource3&outputHeader=resultset
sql:file:config/sql/1__select_stat_machine.sql?dataSource=datasource2&outputHeader=resultset

Sin embargo, cuando ejecuto esto, solo se llama a uno de los destinatarios, solo en este caso datasource2, que estaba en el índice 1 en la lista pasada a la lista de destinatarios:

Calling sql://file:config/sql/1__select_stat_machine.sql?dataSource=datasource2&outputHeader=resultset
Calling sql://file:config/sql/2__select_stat_session.sql?dataSource=datasource2&outputHeader=resultset

Por mi vida no puedo entender lo que estoy haciendo mal. ¿Me estoy perdiendo un end()lugar? ¿Es mi divisor el culpable o es mi lista de destinatarios?

Respuesta 1

Estoy escribiendo una aplicación donde un usuario puede cargar archivos .rdf y luego ejecutar consultas SPARQL en él. En este momento estoy atascado en cómo formatear el resultado de la consulta. Por ejemplo: una ASK-Query genera un ...

mi pregunta es, ¿cómo funciona la serialización de Java? Estoy serializando 100_000 objetos de una clase con un nombre de clase largo y nombres de campo largos. Y lleva mucho más tiempo que con otra clase con poco ...

Tengo estos símbolos arraylist public ArrayList <ArrayList <Letter>> setLetters () {ArrayList <ArrayList <Letter>> letters = new ArrayList <> (); ArrayList <...

Estoy evaluando Node.js para el posible reemplazo de mi funcionalidad de inserción actual en una aplicación web Java. Escribí un servidor de sondeo largo y simple que funciona como un intermediario entre el cliente y Java ...