📜  Apache Camel-与Spring一起使用

📅  最后修改于: 2020-10-30 10:06:17             🧑  作者: Mango


现在,我们将使用Spring从上一章重新创建应用程序。这将使我们对如何用XML(而不是DSL)创建骆驼式路由产生一个想法。

创建新项目

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

GroupId: BasketWithSpring
ArtifactId: BasketWithSpring

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

添加依赖项

除了在先前的应用程序中使用过的核心依赖关系之外,还需要添加更多依赖关系来使用Spring。依赖关系已添加到pom.xml中。现在,打开pom.xml并添加以下依赖项-


   ...
   
      org.springframework
      spring-context
      5.1.3.RELEASE
   
   
   
      org.apache.activemq
      activemq-pool
      5.15.2
   
   
   
      org.apache.activemq
      activemq-pool
      5.15.1
   
   
   
      org.apache.camel
      camel-spring
      2.15.1
   

为Spring创建Java DSL

现在让我们创建一个名为DistributeOrderXML的新Java类。将以下代码添加到它-

public class DistributeOrderXML {
   public static void main(String[] args) throws Exception {
      ApplicationContext appContext = new ClassPathXmlApplicationContext(
         "SpringRouteContext.xml");
      CamelContext camelContext = SpringCamelContext.springCamelContext(appContext, false);
      try {
         camelContext.start();
         ProducerTemplate orderProducerTemplate = camelContext.createProducerTemplate();
         InputStream orderInputStream = new FileInputStream(ClassLoader.getSystemClassLoader()
            .getResource("order.xml").getFile());
         
         orderProducerTemplate.sendBody("direct:DistributeOrderXML", orderInputStream);
      } finally {
         camelContext.stop();
      }
   }
}

main方法中,首先我们创建ApplicationContext的实例,它是Spring应用程序中的中央接口。在其构造函数中,我们指定包含路由和过滤信息的XML文件的名称。

ApplicationContext appContext = new ClassPathXmlApplicationContext(
   "SpringRouteContext.xml");

接下来,我们创建CamelContext,并在其参数中指定上面创建的ApplicationContext

CamelContext camelContext = SpringCamelContext.springCamelContext(appContext, false);

至此,我们的路由和过滤已建立。因此,我们使用其启动方法启动CamelContext 。与前面的情况一样,我们定义了用于加载order.xml文件的端点并开始处理。现在,让我们了解如何在XML中定义路由。

创建应用程序上下文

向项目添加一个新的XML文件,并将其命名为SpringRouteContext.xml。将以下内容剪切-n-粘贴到此文件中。



   
      
         
         
         
            //order[@product = 'Oil']/items
            
            
         
      
   

在这里,我们按如下方式定义xpath查询,请注意,我们现在选择“油”的所有订单。

//order[@product = 'Oil']/items

输出端点是多个。第一个端点指定订单文件夹,第二个端点指定控制台。



运行应用程序。

检测结果

运行该应用程序时,您将在屏幕上看到以下输出。


   
      Cinthol
      Original
      4
      25
   
   
      Cinthol
      Lime
      6
      30
   

在您指定的路径中检出订单文件夹。您将找到一个新创建的文件,其中包含上述XML代码。

结论

Camel提供了一个现成的框架,该框架实施EIP以简化您的集成项目。它支持使用特定于域的语言进行编码以及XML的使用。