Seleccione los datos de la tabla utilizando Apache Camel

continuousLearner:

Quiero ser capaz de base de datos de forma continua encuesta para seleccionar datos de mi mesa usando Camel. He configurado camello en mi solicitud de inicio de la primavera. Estas son las configuraciones que estoy usando

build.gradle:

implementation 'org.apache.camel:camel-jdbc-starter:2.24.0'
implementation 'org.apache.camel:camel-sql-starter:2.24.0'

RouteBuilder clase:

@Component
public class CustomCamelConfig extends RouteBuilder {

    Logger log = LoggerFactory.getLogger(getClass());

    @Autowired
    RouteDataMapper dataMapper;

    @Override
    public void configure() throws Exception {

         from("timer://timer1?period=2s").log("Called every 2 seconds")
         .setBody(constant("select * from tenders"))
         .bean(dataMapper,"generateSalesData")
         .noDelayer();
    }

}

Frijol:

@Component
public class RouteDataMapper {

    Logger log = LoggerFactory.getLogger(getClass());

    public void generateSalesData(String payload) {

        log.info("RouteDataMapper - [generateSalesData]");
        log.info("payload : {}", payload);
    }

}

application.properties

spring.datasource.driver-class-name=oracle.jdbc.driver.OracleDriver
spring.datasource.url=jdbc:oracle:thin:@xxx:xxx/zzz
spring.datasource.username=zzz
spring.datasource.password=zzz

Estoy frente a emitir es que, al imprimir el parámetro del método de frijol (generateSalesData (Cadena de carga útil)), me sale la cadena de consulta en sí ( "SELECT * FROM licitaciones") y no el valor de la tabla. El setBody () en el método configure no acepta una sql:select .. statement, muestra "El setBody método (expresión) en el ProcessorDefinition tipo no es aplicable para los argumentos (String)".

Soy nuevo en camello. ¿Podría alguien por favor hágamelo saber lo que es que me falta por hacer.

Adam Hawkes:

La ruta que tiene, como está escrito, es simplemente fijando el cuerpo del mensaje a una cadena que pasa a parecerse a una SQL. Camello tiene ni idea, ya que no la utilice el componente correcto.

En lugar de

.setBody(constant("select * from tenders"))

Usted necesita decir Camel utilizar el sqlcomponente

.to("sql:select * from tenders")

El resultado que se transmite a RouteDataMapperserá una List<Map<String, Object>>, como se describe en la documentación . Que había necesidad de ajustar el parámetro del método en consecuencia.

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=279608&siteId=1
Recomendado
Clasificación