1
스프링 부트를 사용하여 Camel-SQL을 사용하여 MySQL DB를 쿼리하고 REST 서비스를 호출하는 낙타 경로를 시작합니다.Camel SQL - Spring 부트에서 SimpleRegistry에 DataSource 넣기
는
db.driver=com.mysql.jdbc.Driver
db.url=mysql://IP:PORT/abc
db.username=abc
db.password=pwd
에게 Application.java
public static void main(String[] args) {
SpringApplication.run(WlEventNotificationBatchApplication.class, args);
}
DataSourceConfig.java
public class DataSourceConfig {
@Value("${db.driver}")
public String dbDriver;
@Value("${db.url}")
public String dbUrl;
@Value("${db.username}")
public String dbUserName;
@Value("${db.password}")
public String dbPassword;
@Bean("dataSource")
public DataSource getConfig() {
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName(dbDriver);
dataSource.setUrl(dbUrl);
dataSource.setUsername(dbUserName);
dataSource.setPassword(dbPassword);
return dataSource;
}
}
WLRouteBuilder.java
@Component
public class WLRouteBuilder extends RouteBuilder {
@Autowired
private NotificationConfig notificationConfig;
@Autowired
private DataSource dataSource;
@Override
public void configure() throws Exception {
from("direct:eventNotification")
.to("sql:"+notificationConfig.getSqlQuery()+"?dataSource="+dataSource)
.process(new RowMapper())
.log("${body}");
}
}
가있는 application.properties
나는 낙타가 레지스트리에서 DataSource 빈을 찾을 수 없다는 것을 알게되었다. Java DSL을 사용하는 Spring Boot의 레지스트리에 "DataSource"를 주입하는 방법을 잘 모르겠습니다.
?dataSource=org.springframework.jdbc.datasource.DriverManagerDataSource%40765367 due to: No bean could be found in the registry for: [email protected]67 of type: javax.sql.DataSource
안녕 클로스입니다, 감사합니다 응답에 대한 많은. 내가 한 가지 더 물어봐도 될까요? from ("sql : {{list.sql}}? dataSource = # dataSource") .log ("process row $ {body}") .end(); application.properties 파일에는 camel.springboot.main-run-controller = true가 포함되어 있습니다. 라우트는 CNTRL + C를 누를 때까지 무한히 실행됩니다. camel.springboot.main-run-controller를 제거하면 Camel이 라우트를 시작하고 메인 스레드를 중지합니다. 어쨌든 나는 카멜을 시작하고, 길을 실행하고 멈출 수 있습니다. 내 질문은 분명 희망입니다. 미리 감사드립니다! – user1637487
FAQ보기 : http://camel.apache.org/how-can-i-stop-a-route-from-a-route.html –
안녕하세요 Claus, 죄송합니다. 매우 간단한 걸 놓치신다면 죄송합니다. 이 응용 프로그램에 대해 Spring Boot를 사용하고 있습니다. 나는 ("sql : {{list.eventnotification.sql}} dataSource = # dataSource") .log ("process row $ {body}") .to ("mock : bar"); getContext(). stop();을 추가했습니다. 여전히 route는 application.properties에서 camel.springboot.main-run-controller = true로 인해 중지되지 않습니다. 독립 실행 형 Java 응용 프로그램에서는 route (camelcontext.start())를 시작하고 수동으로 중지합니다. Spring Boot에서는 어떻게 작동합니까? Pls help – user1637487