ETLCloudに基づくMQTTデータ送信コンポーネントはBifroMQとの接続を実装し、IoTデバイスにデータを送信します

背景

ETLCloud私たちはこれまでにオフライン データ統合、リアルタイム データ同期、異種データ変換、レポートとメッセージのプッシュ、カスタム変換ルール、その他の機能を経験しており、作業中に発生する可能性のあるデータ統合をゼロ コード、視覚化ドラッグアンドドロップで質問です。今日はMQTTデータ送信/EMQデータ送信
コンポーネントを練習してみましょうまず、ライブラリ テーブル入力コンポーネントを使用してのデータを取得し、その後、 IoT デバイスへの命令やデータの送信を実現するプロトコル (EMQ 互換) を使用して、指定されたデバイスにデータ ストリームを直接送信します。実際の IoT シナリオでは、クライアント デバイスは、メッセージまたは命令をバッチで送信して、リモート構成および制御操作を実現します。ETLCloudClickHouseMQTTtopic

MQTT ブローカーの選択

主流のものには、、、、、および、モノのインターネット デバイス アクセス サービスを提供するクラウド サービス プロバイダー (Alibaba Cloud、Huawei Cloud など) がMQTT Broker含まれますしかし、今日ここでは、過去 2 日間でオープンソース化されたばかりのBaidu のオープンソースを選択しますこれは、実装に基づいた高性能の分散メッセージ ミドルウェアであり、ネイティブ マルチテナント サポートをシームレスに統合します。大規模な IoT デバイス接続およびメッセージング システムの構築をサポートするように設計されています。Baidu IoT チームの長年にわたる技術蓄積から派生し、現在、パブリック クラウド サービスである Baidu Smart Cloud IoT コア スイートの基本技術として使用されています以下は、を使用して開発されたクライアント ツールであり、による接続の確立、サブスクリプション、公開の効果を実現します。MosquittoEMQHiveMQVerneMQActiveMQBifroMQMQTT Broker
BifroMQJavaMQTT BrokerBifroMQIoT CoreServerlessEMQMQTTxBifroMQ
2023-07-16-0-MQTTx.jpg

データセットの説明

ClickHouseテーブル作成ステートメントは次のとおりです。

CREATE TABLE poetry.poetry (`id` Int32, `title` String, `yunlv_rule` String, `author_id` Int32, `content` String, `dynasty` String, `author` String) ENGINE = MergeTree() PRIMARY KEY id ORDER BY id SETTINGS index_granularity = 8192

ClickHouseデータの読み取りに使用されるライブラリ テーブル入力コンポーネントSQL

-- 按照朝代分组,统计不同朝代的诗词数量
SELECT dynasty, count(*) AS count FROM poetry.poetry GROUP BY dynasty;

ツールの選択

  • クリックハウスデータベース
  • Docker が ETLCloudV2.2 をデプロイ
  • ETLCloudのライブラリテーブル入力コンポーネント、MQTTデータ送信/EMQデータ送信コンポーネント

注記:

  1. ここで選択したコミュニティ バージョンは軽量で、次の展開方法をETLCloud使用してDockerすぐに開始できますdocker pull ccr.ccs.tencentyun.com/restcloud/restcloud-etl:V2.2
  2. 簡単にするために、Dockerデプロイメント モードを使用して以下を実行しますBifroMQdocker run -d --name biformq -p 1883:1883 bifromq/bifromq:latest

2023-07-16-1-Env.jpg

コンポーネントを購入する

「MQTT データ送信/EMQ データ送信」コンポーネントはETLCloudコミュニティ版には含まれていないため、まず公式コンポーネント ライブラリにアクセスして購入を選択します (MQTT データ送信/EMQ データ送信コンポーネントは無料です)。公式コンポーネントライブラリでタイミングデータベース(IOTデバイス)-MQTTデータ送信/EMQデータ送信-をクリックして購入を選択すると、購入したコンポーネントページで表示できます(最初にログインする必要があります)。
2023-07-16-2-購入.jpg

コンポーネントのインストール

「MQTT データ送信/EMQ データ送信」コンポーネントが正常に購入されたら、管理バックエンドの「データ処理コンポーネント」ページにインストールできます。リモート インストールを選択すると、購入したコンポーネントのリストが表示され、新しいIoT コンポーネントETLCloudが表示されます。ここでカテゴリが作成されたら、「このコンポーネント カテゴリの下にインストールする」を選択し、インストールが完了したらページを更新します。
2023-07-16-3-インストール.jpg

アプリケーションとプロセスを作成する

まずアプリケーションを作成し、基本的なアプリケーション構成情報を入力します。
2023-07-16-4-CreateApp.jpg
次に、データプロセスを作成し、情報を入力します。
2023-07-16-5-CreateFlow.jpg

ライブラリテーブル入力とMQTTデータ送信の実践

ClickHouse次に、このデータベースからの統計データの読み込みは視覚的な設定と操作によって完了しOLAP、結果はMQTTプロトコルを通じて指定されたトピックに送信され、トピックを購読しているクライアントデバイスがデータを受信することでリモート管理が実現されます。

データソース構成

  1. 構成ソース: ClickHouse

以前の記事をデータ ソースとして移行した詩データベースを選択しますClickHouse

  1. シンクの構成: MQTT

MQTTサーバーのホストとユーザーのパスワード情報を選択して入力します。
2023-07-16-6-MQTT.jpg2023-07-16-7-BifroMQ.jpg

視覚的な構成プロセス

プロセスを作成した後、「プロセス設計」ボタンをクリックしてプロセス視覚化構成ページに入ることができます。

  1. ライブラリテーブル入力: ClickHouse

左側の入力コンポーネントで「ライブラリ テーブル入力」を選択し、中央のプロセス描画領域にドラッグし、ダブルクリックして構成ステージに入ります。

ステップ 1: 構成したデータ ソースを選択しClickHouseClickHouseそこに既存のテーブルをロードします。
2023-07-16-8-Source1.jpg
ステップ 2: 選択したテーブルに基づいてステートメントを生成できますSQL。ここでは、カスタム クエリ統計ステートメントを使用します。
2023-07-16-9-Source2.jpg
ステップ 3: 各フィールドの定義をテーブルから読み取り、フィールドを追加および削除できます。ここでは、出力したい 2 つのフィールドを示します。
2023-07-16-10-Source3.jpg
ステップ 4:SQLステートメントに基づいてデータ プレビューが自動的に実行され、このようなチェック操作により、後続の操作が正常に実行されることが保証されます。
2023-07-16-11-Source4.jpg

  1. IoT コンポーネント: MQTT データ送信

左側の IoT コンポーネントで「MQTT データ送信」を選択し、中央のプロセス描画領域にドラッグし、ダブルクリックして構成段階に入ります。
作成したデータ ソースを選択しMQTT、テーマをカスタマイズし、送信するデータを入力して、前のプロセス ノードの出力データを直接送信します{$!{data}}
2023-07-16-12-MQTT.jpg
最後に、startlibrary table inputMQTT data送信、およびending流程线コンポーネントをそれぞれ接続することで、MQTTプロトコルを使用して指定されたトピックにデータを送信する視覚的な構成が完了しますMQTT データ送信の前のプロセス ノード、プロセス行で設定されたルーティング属性の出力モードは、コンソール ログに出力されます。
2023-07-16-13-フロー.jpg

2023-07-16-14-結果.jpg

プロセスの実行

プロセスを保存して実行すると、対応するプロセス ログと変換ログを表示して、移行の進行状況を視覚的に監視できます。処理の結果から判断すると、対応するトピックにサブスクライブしたクライアントはメッセージを正常に受信しました。

問題の記録

プロセスの実行時に、インストールされたコンポーネントのエラーが発生しました。つまり、自分でインストールしたコンポーネントが見つかりませんでした。その後、公式技術担当者に連絡してETLSendMqttData.classファイルを送っていただき、指定のディレクトリに配置したところcn.restcloud.etl.module.plugin.mq無事に動作しました。

  • エラー メッセージ: java.lang.Class-java.lang.Exception: ノード: がSendMqttData存在しません。コンポーネント マーケットからダウンロードするか、自分で定義してください。
  • 解決策: コンポーネントをコンテナーの指定されたディレクトリにコピーします/usr/tomcat/webapps/ROOT/WEB-INF/classes/cn/restcloud/etl/module/plugin/mq
# 从宿主机复制文件到容器的指定目录
[root@etl ~]# docker cp /opt/mq de63b29c71d0:/usr/tomcat/webapps/ROOT/WEB-INF/classes/cn/restcloud/etl/module/plugin/
                                             Successfully copied 6.66kB to de63b29c71d0:/usr/tomcat/webapps/ROOT/WEB-INF/classes/cn/restcloud/etl/module/plugin/
# 重启ETLCloud服务
[root@etl ~]# docker restart de63b29c71d0
de63b29c71d0

要約する

BifroMQ名前は北欧神話に登場するBifröst人間の世界Midgardと神々の住む世界を繋ぐ虹の橋をイメージしており、Asgard。  Bifröst二つの世界を結ぶ強固かつ柔軟なチャネルとして、BifroMQまた様々なシステムやアプリケーションを繋ぐハブとなることを目指しています。これらはメッセージパッシングを通じて実現されます。これは、MQTTメッセージを処理して転送するという、分散システムでミドルウェアが果たす役割と非常によく似ています。さらに、Bifröstその頑丈さはBifroMQ安定性と信頼性の卓越性を意味し、柔軟性はBifroMQ拡張性と適応性の利点を象徴しています。全体として、「BifroMQ」は、さまざまなシステムまたはアプリケーション間のブリッジとして機能する、堅牢で柔軟なMQTTミドルウェアです。が提供するMQTTデータ送信/EMQ データ送信
コンポーネントは、上位層のビジネス アプリケーションとリモート デバイス クライアントの間のブリッジとして使用でき、クライアント デバイスにメッセージまたは命令をバッチで送信して、リモート構成と制御操作を実現します。ETLCloudMQTT

参照


ご質問やバグが見つかった場合は、お気軽にご連絡ください。
ご意見やご提案は大歓迎です。

おすすめ

転載: blog.csdn.net/u013810234/article/details/132553572