JBoss Fuse - концепции верблюда
В этой главе мы поймем различные концепции верблюда. Давайте начнем с простого примера, чтобы понять основные концепции.
CamelContext
Каждое приложение Camel будет иметь хотя бы один CamelContext. Это место, где мы добавляем верблюжьи маршруты. Это похоже наApplicationContext весны.
Контекст верблюда можно рассматривать как контейнер, который держит все вместе. В одном контексте верблюда может быть несколько маршрутов.
Маршруты
CamelContext может содержать один или несколько маршрутов. Маршруты - это логика интеграции, которая определяет, как данные будут передаваться в контексте верблюда от одной конечной точки к другой.
Конечная точка
Конечная точка - это конец канала, через который система может отправлять или получать сообщения. Это то, что мы называем местом назначения или источником в языке общения.
Составные части
Компоненты - это точка расширения в Camel. Компоненты могут быть интерфейсом для технологий, формата данных, преобразователей и т. Д. Они также могут выступать в качестве фабрики для конечных точек.
EIP
EIP расшифровывается как Enterprise Integration Pattern. Это известные и хорошо известные решения повторяющейся проблемы. Camel поддерживает большинство шаблонов корпоративной интеграции.
Маршрутизатор на основе контента
Шаблоны CBR позволяют нам маршрутизировать данные в соответствии с содержимым входного файла.
Этот шаблон используется, когда нам нужно маршрутизировать значения в зависимости от содержимого тела ввода.
В следующем примере будут считываться данные из D:/data/inputкаталог. После прочтения он проверит наличие тега значения внутри тега данных. Если тег значения содержитvalue1, он будет отправлен D:/value1, Если он содержит value2, он будет отправлен D:/value2 и если ни одно из этих двух, то оно будет отправлено другим.
<CamelContext xmlns = "http://camel.apache.org/schema/spring">
<route>
<from uri = "file:///D:/data/input"/>
<choice>
<when>
<xpath>/data/value = 'value1'</xpath>
<to uri = "file:///D:/value1"/>
</when>
<when>
<xpath>/data/value = 'value2'</xpath>
<to uri = "file:///D:/value2"/>
</when>
<otherwise>
<to uri = "file:///D:/others "/>
</otherwise>
</choice>
</route>
</camelContext>
Input
D: /data/input/message1.xml
<data>
<value>value1</value>
</data>
D: /data/input/message2.xml
<data>
<value>value2</value>
</data>
Output
D: / значение1 /
<data>
<value>value1</value>
</data>
D: / значение2 /
<data>
<value>value2</value>
</data>
Сплиттер
Шаблон разделителя используется для разделения входных данных на более мелкие части.
Этот шаблон используется в большинстве случаев при вводе огромных данных, которые необходимо разделить на части, чтобы они стали обрабатываемыми. Он разбивает ввод на более мелкие фрагменты на основе входной строки токена.
<CamelContext xmlns = "http://camel.apache.org/schema/spring">
<route>
<from uri = "file:///D:/inbox"/>
<split streaming = "true">
<tokenize token = "order" xml = "true"/>
<to uri = "activemq:queue:order"/>
</split>
</route>
</CamelContext>
Input
D: /inbox/message.xml
<order>
<data>
<value>value1</value>
</data>
</order>
<order>
<data>
<value>value2</value>
</data>
</order>
<order>
<data>
<value>value3</value>
</data>
</order>
Output
Если вы проверите AMQ, вы найдете 3 опубликованных сообщения.
<order>
<data>
<value>value4</value>
</data>
</order>
Список получателей
Шаблон списка получателей используется, когда список получателей необходимо извлечь из самого тела сообщения.
В следующем примере сообщение будет отправлено всем получателям, указанным в теге клиента в виде списка строк, разделенных запятыми.
<CamelContext xmlns = "http://camel.apache.org/schema/spring">
<route>
<from uri = "jms:xmlOrders" />
<recipientList>
<xpath>/order/customer</xpath>
</recipientList>
</route>
</camelContext>
Другие EIP
Camel поддерживает почти все идентифицированные EIP. Некоторые из наиболее часто используемых EIP указаны ниже.
Log - Для регистрации всего сообщения или его части
Message Filter - Фильтрация содержимого сообщений
Re-Sequencer - Чтобы получить все жетоны по порядку
Wiretap - Для проверки дорожных сообщений
Полный список EIP и их использования можно найти в официальной документации Camel. http://camel.apache.org/eip.html
Обработка исключений в Camel
Using Error Handler - Это самый простой способ обработки исключений в camel.
Чтобы использовать это, мы должны настроить bean-компонент класса обработчика ошибок и предоставить его как ссылку на CamelContext errorHandlerRef атрибут.
<bean id = "loggingErrorHandler" class = "org.apache.camel.builder.LoggingErrorHandler">
<property name = "logName" value = "mylogger.name"/>
<property name = "level" value = "DEBUG"/>
</bean>
<camelContext errorHandlerRef = ” loggingErrorHandler” >
…
</camelContext>
Наконец-то с помощью Try Catch
Camel также поддерживает стиль Java Try Catch Finally block для обработки ошибок.
Как и Java, он имеет следующие три блока:
doTry блок содержит код, который может генерировать исключение.
doCatch блок содержит код, который необходимо выполнить в случае исключения.
doFinallyВ блоке есть код, который должен выполняться независимо от исключения. Он всегда будет выполняться независимо от того, было ли исключено исключение или нет.
Note- Mock - это тестируемый компонент и не рекомендуется для других целей. Это компонент в camel, используемый для тестирования так же, как компонент jMOck в разработке через тестирование.
<route>
<from uri = "direct:start"/>
<doTry>
<process ref = "someProcesorThatmayFail"/>
<to uri = "mock:result"/>
<doCatch>
<exception>java.io.IOException</exception>
<exception>java.lang.IllegalStateException</exception>
<to uri = "mock:catch"/>
</doCatch>
<doFinally>
<to uri = "mock:finally"/>
</doFinally>
</doTry>
</route>
В приведенном выше примере мы можем предоставить список исключений, которые должны обрабатываться блоком catch.
Развертывание пакета в Fuse
Запустите предохранитель, используя Fuse.bat/start.bat.
Если вы запускаете Fuse с помощью start.bat, используйте client.bat для подключения к Fuse. Вы должны получить пользовательский интерфейс, как показано на следующем снимке экрана.
Это интерфейс командной строки для доступа к командам Karaf и Fuse.
install –s mvn:group.id /artifact.id/version
e.g. install –s mvn:com.tutorialpoint.app/camel-firt-app/1.0-SNAPSHOT