Apache camel 使用Camel从OracleDB读取表

Apache camel 使用Camel从OracleDB读取表,apache-camel,apache-servicemix,Apache Camel,Apache Servicemix,您好,我是Service mix新手。有人能告诉我如何从oracle Db读取表并将该表发布到本地文件中的正确方向吗?(这里我只想使用blueprint.XML内容,我可以直接将其部署到Service mix部署文件夹中)。下面是一个示例: public class JdbcReadFromOracleRoute extends RouteBuilder { @Override public void configure() throws Exception {

您好,我是Service mix新手。有人能告诉我如何从oracle Db读取表并将该表发布到本地文件中的正确方向吗?(这里我只想使用blueprint.XML内容,我可以直接将其部署到Service mix部署文件夹中)。

下面是一个示例:

public class JdbcReadFromOracleRoute extends RouteBuilder {
    @Override
    public void configure() throws Exception {
        from("sql:select full_name from common.company where code='1'?delay=3000&dataSource=oracleDataSource&outputType=SelectOne")
                .routeId("testOracleRead").autoStartup(true)
        .log(LoggingLevel.INFO, "JDBC oracle : ${body}");
        .to("file://c:/test/test.txt")
    }
}
您可以使用paxjdbc()创建数据源()

获得表的记录后,可以使用模板引擎(例如velocity())或其他方式创建文件内容,然后通过组件文件()保存文件。

一种简单的方法是使用


返回的数据将是Exchange正文中的映射列表,您可以在数据库选择后的下一步中轻松迭代:

<split>
   <simple>${body}</simple>
</split>

${body}
有许多方法可以在
中构建文件。可以使用
simple
${body[field\u NAME\u HERE]}

但是,请记住,对于每个拆分迭代,交换都是新的,因此您不能在交换中的任何内容(如标头或属性)中组合文件内容。相反,我可能会对拆分使用聚合策略,称为。这样,您就可以在旧的exchange正文中以您想要的任何格式逐行构建文件。然后在
结束后,只需使用将exchange正文保存到文件中


另一种选择是在SQL语句之后执行处理器,如果您更愿意这样做,则exchange主体中的映射列表将可供Java代码迭代并构建文件。Camel的拆分器也有开销,因此,如果性能是一个问题,而您正在处理数千条记录,那么这可能是最好的选择。

Thanx非常感谢您的快速响应。。。。我们能否仅使用blueprint.xml文件?还是骆驼是唯一的方法?你能给我详细解释一下吗?刚刚开始使用blueprint使用servicemix是的,您只能使用blueprint.xml。。。您只需将JavaDSL转换为BlueprintXML()。您可以尝试开发一些示例或测试,比如这里(),以便快速响应。。我是一个新的服务组合,所以你可以发布任何详细的代码请?我将ServiceMix与blueprint.xml结合使用,您可以在Maven存储库中找到完整的工作示例。如果您愿意,该示例也将打开。我还建议你把你的手放在《骆驼行动》这本书上。我想如果没有它,我是办不到的。
<split>
   <simple>${body}</simple>
</split>