【发布时间】:2020-06-25 11:17:41
【问题描述】:
我希望能够持续轮询数据库以使用 Camel 从我的表中选择数据。我已经在我的 Spring Boot 应用程序中配置了 Camel。这是我正在使用的配置
build.gradle:
implementation 'org.apache.camel:camel-jdbc-starter:2.24.0'
implementation 'org.apache.camel:camel-sql-starter:2.24.0'
RouteBuilder 类:
@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();
}
}
豆子:
@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
我面临的问题是,当我打印 bean 方法参数 (generateSalesData(String payload)) 时,我得到的是查询字符串本身(“从投标中选择 *”)而不是表中的值。 configure 方法中的 setBody() 不接受 sql:select .. statement,显示“ProcessorDefinition 类型中的方法 setBody(Expression) 不适用于参数 (String)”。
我是骆驼的新手。谁能让我知道我想做什么。
【问题讨论】:
-
为此您需要多条路线。请参阅camel.apache.org/components/latest/sql-component.html 处的示例
标签: java spring spring-boot apache-camel