Учебники

JBoss Fuse — Apache Camel

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

Что такое Apache Camel?

Apache Camel — это интегрированная среда с открытым исходным кодом, которая была запущена в начале 2007 года.

Это подход на основе EIP (Enterprise Integration Pattern), который предоставляет несколько готовых реализаций шаблонов, которые можно использовать для решения проблем интеграции предприятия. EIP — это не что иное, как проверенные решения хорошо документированных и повторяющихся проблем корпоративной интеграции.

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

Основной пример

Предварительные условия для использования Apache Camel:

  • Джава
  • специалист
  • Redhat JBoss Fuse 6.1-GA-379

Создать базовый скелет приложения

mvn:archetype generate 
–DgroupId = com.tutorialpoint.app 
–DartifactId = camel-first-app 
–DarchetypeGroupId = org.apache.camel.archetypes
–DarchetypeArtifactId = camel-archetype-spring 
–DinteractiveMode = false -X

Это должно создать следующую структуру каталогов.

Структура каталогов

Это базовый каркас создаваемого приложения Camel.

Отредактируйте camel-context.xml

Отредактируйте приложение camel-first-app → src → main → resources → META-INF \ spring \ camel-context .xml, чтобы оно соответствовало приведенному ниже.

<?xml version = "1.0" encoding = "UTF-8"?>
<!-- Configures the Camel Context-->
<beans xmlns = "http://www.springframework.org/schema/beans"
   xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation = "http://www.springframework.org/schema/beans
   http://www.springframework.org/schema/beans/spring-beans.xsd
   http://camel.apache.org/schema/spring
   http://camel.apache.org/schema/spring/camel-spring.xsd">

   <camelContext xmlns = "http://camel.apache.org/schema/spring">
      <!-- here is a sample which processes the input file
         (leaving them in place - see the 'noop' flag) 
         then performs content based routing on the message using XPath -->
			
      <route>
         <from uri = "file:///d:/src/data?noop=false"/>
         <choice>
            <when>
               <xpath>/person/city = 'London'</xpath>
               <log message = "UK message"/>
               <to uri = "file:///d:/target/messages/uk"/>
            </when>
				
            <otherwise>
               <log message = "Other message"/>
               <to uri = "file:///d:/target/messages/others"/>
            </otherwise>
				
         </choice>
			
      </route>
   </camelContext>
</beans>

Редактировать pom.xml

Добавьте следующий код внутри <plugins> </ plugins>

<plugin>
   <groupId>org.apache.felix</groupId>
   <artifactId>maven-bundle-plugin</artifactId>
   <version>2.3.4</version>
   <extensions>true</extensions>
	
   <configuration>
      <instructions>
         <Bundle-SymbolicName>
            ${project.artifactId}
         </Bundle-SymbolicName>
         <Import-Package>*</Import-Package>
      </instructions>
   </configuration>
	
</plugin>

Измените тип упаковки с jar → bundle .

<packaging>bundle</packaging>

Создайте проект с помощью следующей команды —

mvn clean install

Установить проект в предохранитель

Запустите Fuse с помощью Fuse.bat / start.bat . Если вы запускаете Fuse с помощью start.bat , используйте client.bat для подключения к Fuse. Вы должны получить пользовательский интерфейс, как показано на следующем скриншоте.

Установить проект в Fuse

Это CLI для доступа к командам Karaf и Fuse.

install –s mvn:com.tutorialpoint.app/camel-firt-app/1.0-SNAPSHOT

Проверьте, работает ли ваш проект

Теперь ваше приложение должно быть установлено в Fuse. Скопируйте каталог данных в camel-first-app и поместите его в D: / src /, и он должен скопировать сообщение с названием city = London в D: / target / merssages / uk .

Поместите входной файл в D: / src / data

вход

Message1.xml

<?xml version = "1.0" encoding = "UTF-8"?>
<person user = "james">
   <firstName>James</firstName>
   <lastName>Strachan</lastName>
   <city>London</city>
</person>

Message2.xml

<?xml version = "1.0" encoding = "UTF-8"?>
<person user = "hiram">
   <firstName>Hiram</firstName>
   <lastName>Chirino</lastName>
   <city>Tampa</city>
</person>

Выход

В D: / target / messages / uk

<?xml version = "1.0" encoding = "UTF-8"?>
<person user = "james">
   <firstName>James</firstName>
   <lastName>Strachan</lastName>
   <city>London</city>
</person>

В D: / target / messages / others