Apache Camel JDBC 插入

Apache Camel JDBC Insert

我正在使用 Apache Camel 并想将数据插入数据库。 我的数据库是 SqlServer。 Apache Camel 版本为 2.14.1

这是我到目前为止尝试过的方法,

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 file2DB {

    public static void main(String[] args) throws Exception {
        final String url = "jdbc:sqlserver://localhost:1433;databaseName=TestDB";

        DataSource datasource = setupDataSource(url);
        SimpleRegistry simpleregistry = new SimpleRegistry();
        simpleregistry.put("DataSource", datasource);
        CamelContext context = new DefaultCamelContext(simpleregistry);
        context.addRoutes(new file2DB().new MyRouteBuilder());

        context.start();
        Thread.sleep(20000);
        context.stop();
    }

    class MyRouteBuilder extends RouteBuilder {
        @Override
        public void configure() throws Exception {
            try {

                from("direct:myTable")
                .setBody(constant("INSERT INTO employee1(empId,payrollId) VALUES('1234','4567')")) 
                .to("jdbc:DataSource");

            } catch (Exception e) {
                e.printStackTrace();
            }

        }
    }
    private static DataSource setupDataSource(String url){
        BasicDataSource basicDataSource = new BasicDataSource();
        basicDataSource.setDriverClassName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
        basicDataSource.setUsername("sa");
        basicDataSource.setPassword("*****");
        basicDataSource.setUrl(url);
        return basicDataSource;
    }

}

我使用下面的代码检查了数据源连接,我得到了结果,所以连接似乎没有问题。

        Connection con=null;
        try {
            con = basicDataSource.getConnection();
            Statement st = con.createStatement();
            ResultSet rs = st.executeQuery("select * from employee1");

            while (rs.next()) {
                System.out.println(rs.getString(2));
            }

        } catch (SQLException e) {
            e.printStackTrace();
        }

我没有收到任何错误,也没有在 table 中插入数据。 我也试过 "SELECT" 查询也不起作用。

我尝试了 Logger,它在日志中给我很多错误 No class defn found twitter 等,我根本没有使用它,我认为我的错误与此无关。

任何帮助。

您需要触发骆驼路线。您使用 from("direct:myTable") 并且开箱即用。您需要向此端点发送消息,或将其更改为计时器或触发新消息的东西。

要发送消息,请使用 ProducerTemplate,您可以在此处找到相关信息