Eclipse Kura — это программная платформа с открытым исходным кодом M2M, выбранная для шлюзов IoT, и она хорошо известна своей простотой использования и гибкостью, а Apache Camel — это механизм маршрутизации сообщений, предоставляющий из коробки десятки соединителей для различных конечных точек.
Eclipse Kura и Apache Camel, объединенные вместе, дают разработчикам возможность абстрагировать логику своего приложения как от полевых протоколов, так и от доставки данных, что упрощает и ускоряет процесс разработки.
Rhiot Kura Быстрый запуск Camel можно использовать для создания проекта OSGi в комплекте с маршрутизатором Camel, который можно развернуть в шлюз Eclipse Kura . Rhiot поддерживает развертывание шлюза Kura в качестве первоклассного гражданина, и этот быстрый старт предназначен для использования в качестве образца развертывания Camel для Kura. Под капотом Rhiot quickstart использует компонент Camel Kura, чтобы усилить интеграцию между Kura и Camel.
Если вам интересно, как проект Kura Camel вписывается в архитектуру Kura, наш краткий старт развертывается на уровне приложений Kura с выделенным экземпляром контекста Camel для каждого пакета приложений.
Создание проекта Кура Верблюд
Чтобы создать проект Kura Camel из Rhiot quickstart, выполните следующие команды:
git clone [email protected]:rhiot/quickstarts.git
cp -r quickstarts/kura-camel kura-camel
cd kura-camel
mvn install
Предпосылки
Мы предполагаем, что Eclipse Kura уже установлен на целевом устройстве. И что вы знаете IP-адрес этого устройства. Если вам случится выполнить развертывание на устройстве на основе Raspbian, и вы хотели бы найти IP-адрес этого устройства Raspberry Pi, подключенного к вашей локальной сети, вы можете использовать сканер Rhiot, как показано ниже:
docker run --net=host -it rhiot/deploy-gateway scan
Команда выше вернет вывод, аналогичный представленному ниже:
Scanning local networks for devices...
======================================
Device type IPv4 address
--------------------------------------
RaspberryPi2 /192.168.1.100
Имейте в виду, что в /opt/eclipse/kura/kura/config.ini
файле на целевом устройстве должно быть включено делегирование загрузки OSGi для пакетов sun.*,com.sun.*
. Вы /opt/eclipse/kura/kura/config.ini
должны содержать следующую строку:
org.osgi.framework.bootdelegation=sun.*,com.sun.*
Для sun
обеспечения бесперебойной работы Camel в Равноденствии требуется делегирование загрузки пакетов.
развертывание
Чтобы развернуть приложение Camel на сервере Kura, вам необходимо скопировать необходимые файлы Camel и пакет, содержащий ваше приложение. Ваш пакет можно развернуть на целевом устройстве, выполнив scp
команду. Например:
scp target/rhiot-kura-camel-1.0.0-SNAPSHOT.jar [email protected]:/tmp
Команда выше скопирует ваш пакет в папку /tmp/rhiot-kura-camel-1.0.0-SNAPSHOT.jar
на целевом устройстве. Используйте аналогичную scp
команду для развертывания банок Camel, необходимых для запуска вашего проекта:
scp ~/.m2/repository/org/apache/camel/camel-core/2.16.0/camel-core-2.16.0.jar [email protected]:/tmp
scp ~/.m2/repository/org/apache/camel/camel-core-osgi/2.16.0/camel-core-osgi-2.16.0.jar [email protected]:/tmp
scp ~/.m2/repository/org/apache/camel/camel-kura/2.16.0/camel-kura-2.16.0.jar [email protected]:/tmp
Теперь войдите в целевое устройство Kura shell, используя telnet:
telnet localhost 5002
И установите пакеты, которые вы ранее написали:
install file:///tmp/camel-core-2.16.0.jar
install file:///tmp/camel-core-osgi-2.16.0.jar
install file:///tmp/camel-kura-2.16.0.jar
install file:///tmp/rhiot-kura-camel-1.0.0-SNAPSHOT.jar
Наконец, запустите ваше приложение, используя следующую команду:
start <ID_OF_rhiot-kura-camel-1.0.0-SNAPSHOT_BUNDLE)
Имейте в виду, что пакеты, развернутые с помощью описанного выше рецепта, не устанавливаются постоянно и будут возвращены после перезапуска сервера. Пожалуйста, прочтите документацию Kura для более подробной информации о постоянных развертываниях .
Что на самом деле делает Quickstart?
Этот быстрый запуск запускает событие таймера Camel каждую секунду и отправляет его в системный регистратор с использованием компонента Camel Log . Это довольно простой функционал, но этого достаточно, чтобы продемонстрировать, что проект Camel Kura на самом деле работает и обрабатывает сообщения.
Фрагмент ниже демонстрирует код маршрута:
public class GatewayRouter extends KuraRouter {
@Override
public void configure() throws Exception {
from("timer://heartbeat").
to("log:heartbeat");
}
...
}
Если вам интересно, как вы можете создавать более сложные маршруты, связанные с внутренними службами Kura, вас заинтересуют входящие статьи, демонстрирующие эти функции.