📅  最后修改于: 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
现在让我们创建一个名为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的使用。