LoginSignup
0
2

More than 1 year has passed since last update.

[Apache Hop] ローコードでMQTT送受信してみた

Last updated at Posted at 2022-08-07

紹介したいこと

  • ローコードでMQTTを送受信する方法を紹介します。
  • HopにはMQTTをPublish, Subscribeする部品がある。
  • HopでのETLの定義の雰囲気を伝えたい for Beginner。

対象者

  • Apache Hop (データ統合プラットフォーム) 、ETLを試してみたい方。
  • ローコードでMQTTを送受信してETL処理に連携させたい方。

前提

  • Dockerを動かすことができる(MQTT Broker)。
  • Apache Hopをインストールしている、HOP GUIを操作できる、簡単な変換処理を定義できる。
  • MQTT部品は標準部品に含まれてない。EXTERNAL PLUGINSのため、以下のサイトの手順沿ってビルドして配置する必要がある。

全体構成

MQTTの送受信の動きを確認するため、以下の全体構成、データの流れを考えて、試してみた。
image.png
MQTTとは
https://kfep.jp/solution/iot-mqtt/mqtt

手順の流れ

  • MQTT Brokerを起動する
  • MQTTをPublishするPipelineを作成する
  • MQTTをSubscribeするPipelineを作成する
  • 動作確認する

MQTT Brokerを起動する

以下のDocker Composeを定義して、docker-compose up -dでBrokerを起動する。
mosquittoをMQTTサーバとして使う。

version: "3"
services:

  broker:
    image: eclipse-mosquitto
    volumes:
      - ./mosquitto/config:/mosquitto/config
      - ./mosquitto/data:/mosquitto/data
      - ./mosquitto/log:/mosquitto/log
    user: "1000:1000"
    ports:
      - 1883:1883

MQTTをPublishするPipelineを作成する

以下のようなパイプラインを作成して実行する。
image.png

  • Generate rows
    image.png
    Never stop generating rows: チェックをいれる
    Interbal in ms: 5000 5秒周期で行を生成しつづける

  • Add sequence
    image.png
    Name of value: valuename → このフィールド名でデータがながれる
    Start at Value: 1 : 1から開始
    Increment by: 1 : 1ずつインクリメント
    Maximum value: 100 : 1~100までインクリメントでまた1にもどる

  • MQTT Publisher
    image.png
    Broker URL: 環境にあわせて設定すること。
    Credentials, SSLは、環境にあわせて設定すること。
    Incoming message filed: valuename: 流れてきたデータをmessageとしてPublishする

MQTTをSubscribeするPipelineを作成する

以下のようなパイプラインを作成して実行する。
image.png

  • MQTT Subscriber
    image.png
    Broker URL: 環境にあわせて設定すること。
    Credentials, SSLは、環境にあわせて設定すること。

image.png
受信するトピックスの名前、データ型を定義する。

動作確認する

Publishする側は、以下のインクリメントしたデータを送信し続ける。定周期 5秒ごとに。
image.png

送信されたデータは、 MQTT Brokerを介してSubscriberに配信される。

Subscribeする側は、以下のようにデータが受信される。
image.png

まとめ

  • このようにMQTT部品を利用して、MQTTのデータをPublisher, Subscribeできることを確認できた。IoTデータなどがMQTT経由でApacheHopでデータを受信できそう。
  • ApacheHopには、mongoDB、PostgerSQL、neo4j, splunkとの連携する機能がある。MQTTで受信したデータを変換して保存することができるかもしれない。
  • Kafka部品もあるので、MQTTのデータをKafkaに連携させることもできそう。MQTTのデータをKSQLなどで集計することもできるかもしれない。

注意事項

  • データ量が増加したり、データの送信頻度が増えたときに、どのくらいスループットが保証できるかは、要件にあわせて試してみてる必要があると思う。
  • 1Pipelineにどのくらい定義できるのか?何個最大でうごかせるか?などはマシンスペック、ネットワークなど環境によりそう。
  • MQTT部品でセキュリティの設定したときの動作は未確認。それも要件によって確認が必要だと思う。

参考

Streaming Apache Hop and MQTT
https://diethardsteiner.github.io/hop/2021/02/08/Apache-Hop-An-introduction-to-MQTT.html

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2