Статьи

Создание верблюжьих маршрутов для Eclipse Kura

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, вас заинтересуют входящие статьи, демонстрирующие эти функции.