Проверим работу Apache Camel - механизма маршрутизации и посредничества, который обеспечивает реализацию на основе объектов Java шаблонов Enterprise Integration с использованием API (или декларативного языка Java Domain Specific Language) для настройки правил маршрутизации и посредничества.
В Code Ready Studio создадим новый проект следующим образом:
File/New/Other/RedHat Fuse/Fuse Integration Project
Вводим название проекта. Кликаем Далее.
В окне Select a Target Environment выберите следующие параметры:
Выберите Standalone в качестве платформы развертывания.
Выберите Karaf / Fuse в Karaf в раскрывающееся ячейке "Runtime" fuse-karaf-7.8.0.fuse-780038-redhat-00001 RuntimeServer в качестве целевой среды выполнения.
После выбора целевой среды выполнения для вас автоматически выбирается версия Camel, и поле становится серым.
Кликаем "Next".
В открывшемся окне Advanced Project Setup выберите Beginner > Content Based Router - Blueprint DSL template.
Щелкните Готово.
Если будет предложено открыть связанную перспективу "Fuse Integration", нажмите Да.
Подождите, пока CodeReady Studio загрузит необходимые артефакты и построит проект в фоновом режиме.
Важно!
Если вы создаете проект Fuse в CodeReady Studio впервые, ему потребуется несколько минут, чтобы завершить создание проекта.
Не пытайтесь прервать работу или закрыть CodeReady Studio, пока проект строится в фоновом режиме.
Разверните проект на сервере следующим образом:
В окне « Servers» (нижний левый угол перспективы «Интеграция Fuse»), если сервер еще не запущен, выберите fuse-karaf-7.8.0.fuse-780038-redhat-00001 Runtime Server и щелкните зеленую стрелку, чтобы запустить его.
Примечание
Если вы видите диалоговое окно, Warning: The authenticity of host 'localhost' can’t be established.t. , нажмите Да, чтобы подключиться к серверу и получить доступ к консоли Karaf.
Подождите, пока вы не увидите сообщение, подобное следующему, в представлении консоли :
Karaf started in 1s. Bundle stats: 12 active, 12 total
После запуска сервера вернитесь в окно «Servers» , щелкните правой кнопкой мыши по серверу и выберите «Add and Remove» в контекстном меню.
В диалоговом окне «Add and Removel» выберите fuse-camel-cbr проект (CBR и Test1) и нажмите кнопку « Добавить» .
Щелкните готово!
Вы можете проверить, запущен ли пакет OSGi проекта, перейдя в Терминал введите bundle:list | tail. Вы должны увидеть следующий результат:
...
228 ^74; Active ^74; 80 ^74; 1.0.0.201505202023 ^74; org.osgi:org.osgi.service.j
232 ^74; Active ^74; 80 ^74; 1.0.0.SNAPSHOT ^74; Fuse CBR Quickstart
Заходим в проводник. Сейчас мы сделаем исполняемыми файлы "fuse", "karaf", "start" в папке bin , находящейся по пути: "/home/текущий пользователь/fuse/bin".
Открываем свойства каждого из этих файлов и на закладке Права устанавливаем флажок "Разрешить исполнение файла как программы".
Необходимо настроить авторизацию пользователей (как минимум администратора системы), для этого раскомментируем строки авторизации по умолчанию:
# Disable admin user for the default installation
admin = admin,_g_:admingroup
_g_\:admingroup = group,admin,manager,viewer,systembundles,ssh
Вводим команду в терминале от главного администратора:
sudo nano /etc/profile
Добавляем строку как показана на скриншоте:
export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::")
Запускаем сервер через терминал, это можно сделать и в Code Ready Studio и в обычном терминале. Команда "sh fuse:"
$ cd fuse-karaf
$ cd bin
$ sh fuse
Запуск сервера через консоль:
Открываем веб интерфейс (консоль управления Hawtio). Копируем адрес и вставляем его в браузер:
http://localhost:8181/hawtio
Тестируем программу Camel CBR.
В тестовой среде Code Ready Studio настроена рабочее пространство Workspace (у нас это папка /home/akulov.na/Code-workspace), в котором находятся исполняемые файлы нашего проекта и данные, каталоги обмена по умолчанию. Эту папку можно увидеть или поменять с помощью команды меню> File > Switch Workspace>Other:
В каталоге "Workspace>CBR 1/src/main/resources/OSGI-INF/blueprint" (в данном случае это каталог "/home/akulov.na/Code-workspace/CBR 1/src/main/resources/OSGI-INF/blueprint") находится
Открываем проводник, заходим в папку рабочего пространства (workspace), внутри рабочей папки выбираем CBR. Эта папка установленного в начале данной статьи приложения Camel CBR. Переходим в "src, main, data".
workspace name/cbr/src/main/fuse/data
В папке "data". В папке "data" находятся примеры XML- файлов заказов покупателей.
<?xml version="1.0"?>
<!DOCTYPE xml>
<!--
Copyright 2014-2017, Red Hat, Inc. and/or its affiliates, and individual
contributors by the @authors tag.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<order>
<customer id="B0002">
<name>Bristol Zoo Gardens</name>
<city>Bristol</city>
<country>UK</country>
</customer>
<date>2012-03-02</date>
<orderlines>
<orderline>
<article id="B0002">
<description>Badger</description>
</article>
<quantity>2</quantity>
</orderline>
<orderline>
<article id="B0202">
<description>Bee</description>
</article>
<quantity>200</quantity>
</orderline>
</orderlines>
</order>
В каждом XML файле прописан адрес, куда он должен переместиться из папки "input". Их нужно скопировать в папку "input", которая находится по пути:
workspace name/work/cbr/input
Как только вы закинете XML файл в папку Input, они сразу же переместятся в только что создавшуюся папку "Output". В этой папке есть еще несколько папок: other, us,uk. XML файлы сами распределятся по папкам.
На закладке "Console" CodeReadyStudio показан лог (см. скриншот выше):
[ead #4 - file://work/cbr/input] cbr-route INFO Receiving order order1.xml
[ead #4 - file://work/cbr/input] cbr-route INFO Sending order order1.xml to another country
[ead #4 - file://work/cbr/input] cbr-route INFO Done processing order1.xml
[ead #4 - file://work/cbr/input] cbr-route INFO Receiving order order2.xml
[ead #4 - file://work/cbr/input] cbr-route INFO Sending order order2.xml to the UK
[ead #4 - file://work/cbr/input] cbr-route INFO Done processing order2.xml
[ead #4 - file://work/cbr/input] cbr-route INFO Receiving order order3.xml
[ead #4 - file://work/cbr/input] cbr-route INFO Sending order order3.xml to the US
[ead #4 - file://work/cbr/input] cbr-route INFO Done processing order3.xml
[ead #4 - file://work/cbr/input] cbr-route INFO Receiving order order4.xml
[ead #4 - file://work/cbr/input] cbr-route INFO Sending order order4.xml to the UK
[ead #4 - file://work/cbr/input] cbr-route INFO Done processing order4.xml
[ead #4 - file://work/cbr/input] cbr-route INFO Receiving order order5.xml
[ead #4 - file://work/cbr/input] cbr-route INFO Sending order order5.xml to the US
[ead #4 - file://work/cbr/input] cbr-route INFO Done processing order5.xml
Открываем консоль управления Hawtio и переходим в Logs.
Лог работы Camel CBR на сервере Red Hat Fuse: