使用骆驼从数据库读取并写入文件 [英] Read from database and write to file using camel

查看:26
本文介绍了使用骆驼从数据库读取并写入文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想从数据库中读取数据并将记录写入使用 Camel 的文件.下面是我的代码:

import javax.sql.DataSource;导入 org.apache.camel.CamelContext;导入 org.apache.camel.builder.RouteBuilder;导入 org.apache.camel.impl.DefaultCamelContext;导入 org.apache.camel.impl.SimpleRegistry;导入 org.apache.commons.dbcp.BasicDataSource;公共类 JDBCExampleSimpleRegistry {public static void main(String[] args) 抛出异常 {最终字符串 url = "jdbc:oracle:thin:@MYSERVER:1521:myDB";数据源数据源 = setupDataSource(url);SimpleRegistry reg = new SimpleRegistry() ;reg.put("myDataSource",dataSource);CamelContext context = new DefaultCamelContext(reg);context.addRoutes(new JDBCExampleSimpleRegistry().new MyRouteBuilder());上下文.开始();线程睡眠(5000);上下文停止();}类 MyRouteBuilder 扩展了 RouteBuilder {公共无效配置(){String dst = "C:/Local Disk E/TestData/Destination/?fileName=output.txt";从(直接:我的表").setBody(constant("select * from myTable")).to("jdbc:myDataSource").to("file://" + dst);}}私有静态数据源 setupDataSource(String connectURI) {BasicDataSource ds = new BasicDataSource();ds.setDriverClassName("oracle.jdbc.driver.OracleDriver");ds.setUsername("sa");ds.setPassword("devon1");ds.setUrl(connectURI);返回 ds;}}

上述程序运行良好,CamelContext 优雅关闭.但是,不会创建目标文件.我做错了什么?

我是 Apache Camel 的新手,所以感谢您的帮助.我在 Apache Camel 2.12.1 中使用 JDK7,没有使用 Spring.

解决方案

可以看一下 SQL 示例:http://camel.apache.org/sql-example.html 然后写入文件,只是发送到文件而不是像 sql 示例那样调用 bean.>

如果你想使用 JDBC 组件,那么它没有内置消费者,所以你需要使用计时器或石英调度程序触发路由,每 X 次运行一次路由.

I want to read from the database and write the records to a file using Camel. Below is my code:

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;
    }
}

The above program works fine and CamelContext is elegantly shutdown. However, the target file is not created. What am I doing wrong?

I am a newbie to Apache Camel so appreciate any help. I am using JDK7 with Apache Camel 2.12.1 and is not using Spring.

解决方案

You can take a look at the SQL example: http://camel.apache.org/sql-example.html and then to write to file, is just to send to a file instead of calling the bean as the sql example does.

If you want to use the JDBC component then it doesnt have built-in consumer, so you need to trigger the route using a timer or a quartz scheduler to run the route every X time.

这篇关于使用骆驼从数据库读取并写入文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆