Статьи

Посредническая маршрутизация с использованием Apache Camel


В этой части статьи мы переходим к практической стороне интеграции с использованием шаблонов.
В качестве реализации EIP я буду использовать интеграционную платформу Apache Camel.

Основной единицей работы в Apache Camel является маршрут. Маршрут — это просто поток EIP, где выход одного EIP является входом другого. Итак, начнем с простого примера.

Я хотел бы отсортировать файлы XML на основе их содержимого. Когда элемент xml, обозначающий город человека, имеет значение «Лондон», файл необходимо скопировать в
каталог
messages / uk , в другом случае — в
каталог
messages / others . Дополнительно я хочу регистрировать каждую операцию копирования. Вот поток EIP, реализующий описанную выше логику:

 

Ниже вы можете увидеть конфигурацию контекста Apache Camel:

1:  <code style="color: black; word-wrap: normal;">1:  <camelContext xmlns="http://camel.apache.org/schema/spring">  
2:    <route>  
3:      <from uri="file:src/data?noop=true"/>  
4:      <choice>  
5:        <when>  
6:          <xpath>/person/city = 'London'</xpath>  
7:          <log message="UK message"/>  
8:          <to uri="file:target/messages/uk"/>  
9:        </when>  
10:        <otherwise>  
11:          <log message="Other message"/>  
12:          <to uri="file:target/messages/others"/>  
13:        </otherwise>  
14:      </choice>  
15:    </route>  
16:  </camelContext>  </code><code style="color: black; word-wrap: normal;">
</code>

Как следует из названия,
from является объявлением конечной точки источника, которая прослушивает события / события опросов. В этом примере конечная точка является файловым поллером. На веб-сайте
http://camel.apache.org/components.html вы можете найти список всех доступных компонентов Apache Camel, каждый из которых содержит подробное описание
конфигурации URI .

Следующим элементом в конфигурации является
выбор, когда в противном случае , это маршрутизатор на основе контента. В нашем примере,
когда условие является
выражением
xpath / person / city = ‘London’. Узел
в
противном случае выбирается , когда ни один из
,
когда условия не выполняются. Для регистрации сообщений вы можете использовать
журналэлемент. Последний узел находится
на который является целевой конечной точкой.

XML слева копируется в
messages / uk, а XML справа копируется в
сообщения / другие.

 <person user="james">  
  <firstName>James</firstName>  
  <lastName>Strachan</lastName>         
  <city>London</city>  
 </person>  
 <person user="michal">  
  <firstName>Michał</firstName>         
  <lastName>Warecki</lastName>  
  <city>Warszawa</city>  
 </person>  

В
следующем разделе будет показано, как запустить вышеупомянутый пример.