3

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 は使用していません。

4

1 に答える 1

2

SQL の例を見ることができます: http://camel.apache.org/sql-example.htmlファイルに書き込むには、SQL の例のように Bean を呼び出すのではなく、ファイルに送信するだけです。

JDBC コンポーネントを使用する場合、コンシューマーが組み込まれていないため、タイマーまたはクォーツ スケジューラを使用してルートをトリガーし、X 回ごとにルートを実行する必要があります。

于 2013-10-16T15:21:28.893 に答える