📜  Apache Camel-项目

📅  最后修改于: 2020-10-30 10:05:49             🧑  作者: Mango


我们将使用Maven构建一个Camel项目。虽然,我们最好使用IntelliJ IDE进行开发。您可以为该项目使用选择的任何IDE。

创建新项目

创建一个新的Maven项目并指定以下内容-

GroupId: Basket
ArtifactId: Basket

选择项目的默认位置,或者如果您愿意,请指定您选择的目录。

添加依赖项

您需要添加一些依赖关系才能使用Camel。依赖项添加到pom.xml中。所以打开pom.xml并添加以下两个依赖项-


   
      org.apache.camel
      camel-core
      2.20.0
   
   
      org.apache.camel
      camel-stream
      2.20.0
   

注意-我们需要为应用程序提供最少的依赖。当您从库中使用更多的Camel组件时,需要在此pom.xml文件中添加相应的依赖项。

创建Java DSL

接下来,您将在Java DSL中编写过滤和路由代码。创建一个名为DistributeOrderDSL的新Java类。将以下代码添加到它-

public class DistributeOrderDSL {
   public static void main(String[] args) throws Exception {
      CamelContext context = new DefaultCamelContext();
      try {
         context.addRoutes(new RouteBuilder() {
            @Override
            public void configure() throws Exception {
               from("direct:DistributeOrderDSL")
                  .split(xpath("//order[@product='soaps']/items")).to("stream:out");
               
               // .to("file:src/main/resources/order/");
            }
         });
         context.start();
         ProducerTemplate orderProducerTemplate = context.createProducerTemplate();
         InputStream orderInputStream = new FileInputStream(ClassLoader.getSystemClassLoader()
            .getResource("order.xml").getFile());
         orderProducerTemplate.sendBody("direct:DistributeOrderDSL", orderInputStream);
      } finally {
         context.stop();
      }
   }
}

main方法中,首先我们通过实例化DefaultCamelContext类中提供的默认实现来创建CamelContext

CamelContext context = new DefaultCamelContext();

接下来,我们通过创建一个匿名RouteBuilder实例添加路由-

context.addRoutes(new RouteBuilder() {

我们重写configure方法,以添加从直接URI DistributeOrderDSL到系统控制台的路由。我们使用xpath查询提供一些过滤。

public void configure() throws Exception {
   from("direct:DistributeOrderDSL")
      .split(xpath("//order[@product = 'soaps']/items")).to("stream:out");
   // .to("file:src/main/resources/order/");
}

添加路由后,我们开始上下文-

context.start();

接下来,我们添加代码来创建我们的直接URI – DistributeOrderDSL。

ProducerTemplate orderProducerTemplate = context.createProducerTemplate();
InputStream orderInputStream = new FileInputStream(ClassLoader.getSystemClassLoader()
   .getResource("order.xml").getFile());

最后,我们开始处理-

orderProducerTemplate.sendBody("direct:DistributeOrderDSL", orderInputStream);

现在,随着Java DSL代码的完成,测试应用程序之前唯一剩下的就是将order.xml文件添加到项目中。为此,您可以使用“简介”一章中显示的示例XML。

检测结果

运行应用程序时,您将看到以下输出-


   
      Cinthol
      Original
      4
      25
   
   
      Cinthol
      Lime
      6
      30
   

请注意,此处仅列出肥皂的订单。如果您希望将其存储到本地文件,只需注释stream.out行,并在configure方法中取消注释以下行-

// .to("file:src/main/resources/order/");

在接下来的部分中,我们将学习如何在Spring中使用Camel。