背景
ETLCloud
私たちはこれまでにオフライン データ統合、リアルタイム データ同期、異種データ変換、レポートとメッセージのプッシュ、カスタム変換ルール、その他の機能を経験しており、作業中に発生する可能性のあるデータ統合をゼロ コード、視覚化、ドラッグアンドドロップで質問です。今日はMQTTデータ送信/EMQデータ送信
コンポーネントを練習してみましょう。まず、ライブラリ テーブル入力コンポーネントを使用してのデータを取得し、その後、 IoT デバイスへの命令やデータの送信を実現するプロトコル (EMQ 互換) を使用して、指定されたデバイスにデータ ストリームを直接送信します。実際の IoT シナリオでは、クライアント デバイスは、メッセージまたは命令をバッチで送信して、リモート構成および制御操作を実現します。ETLCloud
ClickHouse
MQTT
topic
MQTT ブローカーの選択
主流のものには、、、、、および、モノのインターネット デバイス アクセス サービスを提供するクラウド サービス プロバイダー (Alibaba Cloud、Huawei Cloud など) がMQTT Broker
含まれます。しかし、今日ここでは、過去 2 日間でオープンソース化されたばかりのBaidu のオープンソースを選択します。これは、実装に基づいた高性能の分散メッセージ ミドルウェアであり、ネイティブ マルチテナント サポートをシームレスに統合します。大規模な IoT デバイス接続およびメッセージング システムの構築をサポートするように設計されています。Baidu IoT チームの長年にわたる技術蓄積から派生し、現在、パブリック クラウド サービスである Baidu Smart Cloud IoT コア スイートの基本技術として使用されています。以下は、を使用して開発されたクライアント ツールであり、による接続の確立、サブスクリプション、公開の効果を実現します。Mosquitto
EMQ
HiveMQ
VerneMQ
ActiveMQ
BifroMQ
MQTT Broker
BifroMQ
Java
MQTT Broker
BifroMQ
IoT Core
Serverless
EMQ
MQTTx
BifroMQ
データセットの説明
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データ送信コンポーネント
注記:
- ここで選択したコミュニティ バージョンは軽量で、次の展開方法を
ETLCloud
使用してDocker
すぐに開始できますdocker pull ccr.ccs.tencentyun.com/restcloud/restcloud-etl:V2.2
。 - 簡単にするために、
Docker
デプロイメント モードを使用して以下を実行しますBifroMQ
。docker run -d --name biformq -p 1883:1883 bifromq/bifromq:latest
コンポーネントを購入する
「MQTT データ送信/EMQ データ送信」コンポーネントはETLCloud
コミュニティ版には含まれていないため、まず公式コンポーネント ライブラリにアクセスして購入を選択します (MQTT データ送信/EMQ データ送信コンポーネントは無料です)。公式コンポーネントライブラリでタイミングデータベース(IOTデバイス)-MQTTデータ送信/EMQデータ送信-をクリックして購入を選択すると、購入したコンポーネントページで表示できます(最初にログインする必要があります)。
コンポーネントのインストール
「MQTT データ送信/EMQ データ送信」コンポーネントが正常に購入されたら、管理バックエンドの「データ処理コンポーネント」ページにインストールできます。リモート インストールを選択すると、購入したコンポーネントのリストが表示され、新しいIoT コンポーネントETLCloud
が表示されます。ここでカテゴリが作成されたら、「このコンポーネント カテゴリの下にインストールする」を選択し、インストールが完了したらページを更新します。
アプリケーションとプロセスを作成する
まずアプリケーションを作成し、基本的なアプリケーション構成情報を入力します。
次に、データプロセスを作成し、情報を入力します。
ライブラリテーブル入力とMQTTデータ送信の実践
ClickHouse
次に、このデータベースからの統計データの読み込みは視覚的な設定と操作によって完了しOLAP
、結果はMQTT
プロトコルを通じて指定されたトピックに送信され、トピックを購読しているクライアントデバイスがデータを受信することでリモート管理が実現されます。
データソース構成
- 構成ソース: ClickHouse
以前の記事をデータ ソースとして移行した詩データベースを選択しますClickHouse
。
- シンクの構成: MQTT
MQTT
サーバーのホストとユーザーのパスワード情報を選択して入力します。
視覚的な構成プロセス
プロセスを作成した後、「プロセス設計」ボタンをクリックしてプロセス視覚化構成ページに入ることができます。
- ライブラリテーブル入力: ClickHouse
左側の入力コンポーネントで「ライブラリ テーブル入力」を選択し、中央のプロセス描画領域にドラッグし、ダブルクリックして構成ステージに入ります。
ステップ 1: 構成したデータ ソースを選択しClickHouse
、ClickHouse
そこに既存のテーブルをロードします。
ステップ 2: 選択したテーブルに基づいてステートメントを生成できますSQL
。ここでは、カスタム クエリ統計ステートメントを使用します。
ステップ 3: 各フィールドの定義をテーブルから読み取り、フィールドを追加および削除できます。ここでは、出力したい 2 つのフィールドを示します。
ステップ 4:SQL
ステートメントに基づいてデータ プレビューが自動的に実行され、このようなチェック操作により、後続の操作が正常に実行されることが保証されます。
- IoT コンポーネント: MQTT データ送信
左側の IoT コンポーネントで「MQTT データ送信」を選択し、中央のプロセス描画領域にドラッグし、ダブルクリックして構成段階に入ります。
作成したデータ ソースを選択しMQTT
、テーマをカスタマイズし、送信するデータを入力して、前のプロセス ノードの出力データを直接送信します{$!{data}}
。
最後に、start、library table input、MQTT data送信、およびending流程线
コンポーネントをそれぞれ接続することで、MQTTプロトコルを使用して指定されたトピックにデータを送信する視覚的な構成が完了します。MQTT データ送信の前のプロセス ノード、プロセス行で設定されたルーティング属性の出力モードは、コンソール ログに出力されます。
プロセスの実行
プロセスを保存して実行すると、対応するプロセス ログと変換ログを表示して、移行の進行状況を視覚的に監視できます。処理の結果から判断すると、対応するトピックにサブスクライブしたクライアントはメッセージを正常に受信しました。
問題の記録
プロセスの実行時に、インストールされたコンポーネントのエラーが発生しました。つまり、自分でインストールしたコンポーネントが見つかりませんでした。その後、公式技術担当者に連絡して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 データ送信
コンポーネントは、上位層のビジネス アプリケーションとリモート デバイス クライアントの間のブリッジとして使用でき、クライアント デバイスにメッセージまたは命令をバッチで送信して、リモート構成と制御操作を実現します。ETLCloud
MQTT
参照
ご質問やバグが見つかった場合は、お気軽にご連絡ください。
ご意見やご提案は大歓迎です。