2
我想從數據庫讀取數據並使用Camel將記錄寫入文件。以下是我的代碼:從數據庫讀取數據並使用駱駝寫入文件
import javax.sql.DataSource;
import org.apache.camel.CamelContext;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.impl.DefaultCamelContext;
import org.apache.camel.impl.SimpleRegistry;
import org.apache.commons.dbcp.BasicDataSource;
public class JDBCExampleSimpleRegistry {
public static void main(String[] args) throws Exception {
final String url = "jdbc:oracle:thin:@MYSERVER:1521:myDB";
DataSource dataSource = setupDataSource(url);
SimpleRegistry reg = new SimpleRegistry() ;
reg.put("myDataSource",dataSource);
CamelContext context = new DefaultCamelContext(reg);
context.addRoutes(new JDBCExampleSimpleRegistry().new MyRouteBuilder());
context.start();
Thread.sleep(5000);
context.stop();
}
class MyRouteBuilder extends RouteBuilder {
public void configure() {
String dst = "C:/Local Disk E/TestData/Destination/?fileName=output.txt";
from("direct:myTable")
.setBody(constant("select * from myTable"))
.to("jdbc:myDataSource")
.to("file://" + dst);
}
}
private static DataSource setupDataSource(String connectURI) {
BasicDataSource ds = new BasicDataSource();
ds.setDriverClassName("oracle.jdbc.driver.OracleDriver");
ds.setUsername("sa");
ds.setPassword("devon1");
ds.setUrl(connectURI);
return ds;
}
}
上面的程序工作正常,CamelContext被優雅地關閉。但是,目標文件未創建。我究竟做錯了什麼?
我是Apache Camel的新手,非常感謝任何幫助。我在Apache Camel 2.12.1上使用JDK7,並沒有使用Spring。
該路由將不會被執行,因爲它從一個'direct:'端點開始。只有在另一條路由向其發送消息時,才能觸發'direct:'端點。 我完全不瞭解應用程序的完整要求。看起來你正試圖實現一個控制檯應用程序,它只能將一些數據從數據庫寫入文件一次。但我認爲駱駝更適合服務。 –
由於你是駱駝新手,我建議閱讀這篇文章:http://java.dzone.com/articles/open-source-integration-apache –