Пример: Apache Camel с Blueprint

Здесь мы представляем полностью рабочий проект Apache Camel Blueprint. Он предоставляет пример кода для построения маршрутов, создания bean-компонентов и развертывания в ServiceMix с помощью Blueprint. Blueprint Короче говоря, Blueprint очень похож на Spring. На самом деле, это очень похоже на Spring, но с небольшими отличиями. Спецификация контейнера Blueprint была создана OSGi Alliance (с использованием Eclipse Gemini Blueprint в качестве эталонной реализации), чтобы предоставить приложениям лучшее разделение модулей, возможность динамического

Здесь мы представляем полностью рабочий проект Apache Camel Blueprint. Он предоставляет пример кода для построения маршрутов, создания bean-компонентов и развертывания в ServiceMix с помощью Blueprint.

Чертеж

Короче говоря, Blueprint очень похож на Spring. На самом деле, это очень похоже на Spring, но с небольшими отличиями. Спецификация контейнера Blueprint была создана OSGi Alliance (с использованием Eclipse Gemini Blueprint в качестве эталонной реализации), чтобы предоставить приложениям лучшее разделение модулей, возможность динамического добавления, удаления и обновления модулей в работающей системе, возможность развертывания несколько версий модуля одновременно (с автоматическим подключением клиентов к соответствующей версии) и динамическая модель обслуживания. На Blueprint сильно влияет Spring, поэтому он реализует многие функции Spring, хотя больше ориентирован на приложения OSGi.

Файл Blueprint написан в XML и обычно содержится в OSGI-INF/blueprint/ , который является его расположением по умолчанию. Этот каталог будет упакован с результирующим файлом JAR, и контейнеры OSGi, такие как ServiceMix, по умолчанию будут искать там один или несколько файлов Blueprint. Кажется, это нигде не очень хорошо документировано, но имейте в виду, что файлы Blueprint не обязательно должны быть упакованы внутри файла JAR. Они могут быть автономными файлами, которые загружаются в контейнер OSGi (т. deploy/ ServiceMix) сами по себе. Это может быть очень удобно для изменения маршрута на лету.

Код

Здесь мы покажем вам, как создать простой развертываемый маршрут Camel, используя сочетание Blueprint (для спецификации маршрута) и Java (для обработки сообщений). Каталог проекта имеет следующую структуру:

 stackabuse-example-blueprint/ 
 pom.xml 
 src/ 
 main/ 
 java/ 
 com.stackabuse.example.WeatherProcessor.java 
 resources/ 
 OSGI-INF/ 
 blueprint/ 
 blueprint-example.xml 
 test/ 

Использование Maven для пакетов OSGi очень удобно, в основном из-за предоставленного maven-bundle-plugin, созданного проектом Apache Felix. Этот плагин, учитывая некоторые конфигурации в pom.xml , сгенерирует ваш файл MANIFEST.MF для вас с помощью BND , что избавит вас от многих головных болей.

blueprint-example.xml содержит определения наших маршрутов Camel в XML, который имеет тот же уровень детализации, что и язык, специфичный для домена Java (DSL). Содержимое выглядит так:

 <?xml version="1.0" encoding="UTF-8"?> 
 <blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0" 
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
 xsi:schemaLocation=" 
 http://www.osgi.org/xmlns/blueprint/v1.0.0 http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd 
 http://cxf.apache.org/blueprint/jaxws http://cxf.apache.org/schemas/blueprint/jaxws.xsd 
 http://cxf.apache.org/blueprint/core http://cxf.apache.org/schemas/blueprint/core.xsd 
 "> 
 
 <bean id="weatherProcessor" class="com.stackabuse.example.WeatherProcessor" /> 
 
 <camelContext xmlns="http://camel.apache.org/schema/blueprint"> 
 
 <route> 
 <from uri="timer:fetch?period=3600s&amp;delay=5s" /> 
 <to uri="direct:trigger" /> 
 </route> 
 
 <route> 
 <from uri="direct:trigger" /> 
 <to uri="weather:foo?location=Omaha,United States&amp;period=7 days&amp;units=IMPERIAL" /> 
 <process ref="weatherProcessor" /> 
 <to uri="log:com.stackabuse.example?level=DEBUG" /> 
 <to uri="file:/Users/scott/Desktop/weather?fileName=omaha.txt" /> 
 </route> 
 
 </camelContext> 
 
 </blueprint> 

Все файлы Blueprint начинаются с <blueprint> тег и обычно содержат <camelContext> тег , чтобы указать Camel маршруты. В этом примере наш маршрут запускается простым таймером каждый час (3600 секунд), в котором он затем извлекает 7-дневный прогноз для Омахи, штат Северная Каролина, США и сохраняет результат в файл на рабочем столе. Прежде чем данные будут сохранены, они проходят через процессор, который определен как Java bean, перед запуском тега <camelContext> Этот bean-компонент, показанный ниже, реализует org.apache.camel.Processor и извлекает только те данные, которые нам нужны, из возвращенных данных о погоде в формате JSON. Он анализирует JSON и возвращает строку вида «[дата]: [температура] Цельсия» для сохранения в файл.

На веб-сайте Apache Camel практически на каждой странице компонентов Camel представлены примеры как на Java, так и на Blueprint, что делает разработку маршрутов столь же простой, если не более простой, в Blueprint. Мне было трудно найти много примеров кода Blueprint, несмотря на его популярность, поэтому, если у вас когда-нибудь возникнут сомнения в возможностях Blueprint, просто предположите, что все, что работает в Spring, будет работать в Blueprint, плюс дополнительные функции / схемы, специфичные для Camel. .

Использование кода

Если вы хотите попробовать это сами, вы можете загрузить приведенный ниже код. Для его запуска у вас должны быть установлены Apache Maven и Apache ServiceMix. Создайте проект, stackabuse-example-blueprint , выполнив mvn package и, наконец, поместив полученный файл JAR в каталог deploy/ Поскольку полученный JAR-файл представляет собой пакет OSGi, он не будет содержать зависимостей, как вы могли ожидать. Вам также необходимо разместить следующие зависимости в папке deploy/

  • org.apache.felix.eventadmin-1.3.2.jar
  • верблюд-погода-2.12.3.jar
  • верблюд-ядро-osgi-2.12.3.jar
  • org.osgi.core-1.0.0.jar
  • json-20140107.jar

Вы сможете найти все эти JAR-файлы в локальном репозитории Maven ( ~/.m2/ ) после сборки проекта с помощью Maven.

И , наконец, запустить пакет, начать ServiceMix либо исполняющий servicemix или start с [ServiceMix Home Dir]/bin . Через несколько секунд weather/ содержащий файл с прогнозом погоды для Омахи на следующий день.

Ресурсы

comments powered by Disqus