Apache Camel - Проект
Мы будем использовать Maven для создания проекта Camel. Хотя для разработки предпочтительнее использовать IntelliJ IDE. Вы можете использовать любую IDE по вашему выбору для этого проекта.
Создание нового проекта
Создать новый Maven проект и укажите следующее -
GroupId: Basket
ArtifactId: Basket
Выберите расположение по умолчанию для вашего проекта или, если вы предпочитаете, укажите каталог по вашему выбору.
Добавление зависимостей
Вам нужно добавить несколько зависимостей, чтобы использовать Camel. Зависимости добавляются вpom.xml. Итак, откройте pom.xml и добавьте следующие две зависимости:
<dependencies>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-core</artifactId>
<version>2.20.0</version>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-stream</artifactId>
<version>2.20.0</version>
</dependency>
</dependencies>
Note- Нам нужен минимум зависимостей для нашего приложения. Поскольку вы используете больше компонентов Camel из его библиотек, вам нужно будет добавить соответствующие зависимости в этот файл pom.xml.
Создание Java DSL
Затем вы напишете свой код фильтрации и маршрутизации в Java DSL. Создайте новый класс Java с именемDistributeOrderDSL. Добавьте к нему следующий код -
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 метод, сначала мы создаем CamelContext путем создания экземпляра реализации по умолчанию, представленной в DefaultCamelContext класс.
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, показанный в главе «Введение».
Результаты теста
Когда вы запустите приложение, вы увидите следующий результат -
<items>
<item>
<Brand>Cinthol</Brand>
<Type>Original</Type>
<Quantity>4</Quantity>
<Price>25</Price>
</item>
<item>
<Brand>Cinthol</Brand>
<Type>Lime</Type>
<Quantity>6</Quantity>
<Price>30</Price>
</item>
</items>
Обратите внимание, что здесь перечислены только заказы на мыло. Если вы хотите сохранить это в локальном файле, просто прокомментируйтеstream.out строку и раскомментируйте следующую строку в своем configure метод -
// .to("file:src/main/resources/order/");
В следующем разделе мы узнаем, как использовать Camel с Spring.