ソフトウェア要件:
EMQ Enterprise Editionを使用する必要がある
シーンの要件:
モノのインターネットプラットフォームは、スマートトランスフォーマー収集デバイスによって収集されたデータにアクセスし、MQTTプロトコルに基づいてサーバーのMQ(EMQ)にデータを転送する必要があります。EMQはデータをKafkaクラスターに転送し、sparkStreamingはリアルタイム分析と処理のためにKafkaに接続します。
準備オーケー:
- アップロードデータの準備:
{
"id": "NXP-058659730253-963945118132721-22", // 客户端识别码
"speed": 32.12, // 车辆速度
"direction": 198.33212, // 行驶方向
"tachometer": 3211, // 发动机转速,数值大于 8000 时才需存储
"dynamical": 8.93, // 瞬时油耗
"location": {
// GPS 经纬度数据
"lng": 116.296011,
"lat": 40.005091
},
"ts": 1563268202 // 上报时间
}
- Kafkaトピックを作成
./kafka-topics.sh --create --partitions 3 --replication-factor 2 --topic emqtopic --zookeeper node01:2181,node02:2181,node03:2181
設定手順:
-
リソースを作成する
EMQ Xダッシュボードを開き、左側のメニューにあるリソースページに入り、[新規]ボタンをクリックし、Kafkaサーバー情報を入力してリソースを作成します。
EMQ Xクラスター内のノードのネットワーク環境は互いに異なる場合があります。リソースが正常に作成されたら、リストのステータスボタンをクリックして、各ノードのリソース接続ステータスを確認します。ノード上のリソースが使用できない場合は、構成が正しいかどうか、ネットワーク接続を確認して、クリックしてください手動で再接続するための接続ボタン。
-
ルールの作成
左側のメニューのルールページに移動し、[新規]ボタンをクリックしてルールを作成します。ここでは、イベントメッセージの解放をトリガーすることを選択し、メッセージが解放されたときにデータ処理のルールをトリガーします。
トリガーイベントを選択すると、オプションのフィールドとサンプルSQLがインターフェイスに表示されます。
-
必須フィールドのフィルタリング
ルールエンジンは、SQLメッセージを使用して、ターミナルメッセージや接続イベントなどを処理/整数化します。このビジネスでは、ペイロードのキーフィールドをフィルターで除外するだけで使用できます。これを行うには、payload。形式を使用して、ペイロードのフィールドを選択できます。さらに、ペイロードのコンテンツに加えて、メッセージのID情報を保存する必要があります。SQLは次の形式で構成できます。
SELECT
payload.id as client_id, payload.speed as speed,
payload.tachometer as tachometer,
payload.ts as ts, id
FROM
"message.publish"
WHERE
topic =~ 't/#'
- 出力テストにSQLテスト関数を使用します。SQLテスト関数を使用すると
、現在のSQL処理後のデータ出力をリアルタイムで表示できます。この関数では、ペイロードと他のシミュレートされた生データを指定する必要があります。
ペイロードデータは次のとおりです。SQL条件を満たすためにタコメーターの値を変更することに注意してください。
{
"id": "NXP-058659730253-963945118132721-22",
"speed": 32.12,
"direction": 198.33212,
"tachometer": 9001,
"dynamical": 8.93,
"location": {
"lng": 116.296011,
"lat": 40.005091
},
"ts": 1563268202
}
SQLテストスイッチボタンをクリックして、トピックとペイロードをシーン内の情報に変更し、テストボタンをクリックしてデータ出力を表示します。
テスト出力データは次のとおりです。
{
"client_id": "NXP-058659730253-963945118132721-22",
"id": "589A429E9572FB44B0000057C0001",
"speed": 32.12,
"tachometer": 9001,
"ts": 1563268202
}
- 応答アクションを追加し、メッセージをKafka
SQL条件付き入力および出力にブリッジした後、対応するアクションを追加し、記述されたSQLステートメントを構成し、スクリーニング結果をKafkaにブリッジします。
応答アクションの[追加]ボタンをクリックし、Kafkaアクションへのブリッジデータを選択し、選択したばかりのリソースを選択して、上記で作成したKafkaトピックのemqtopicに入力します。
テスト
ダッシュボードのWebsocketツールを使用してテストします。
[ツール]-> [Websocket]ページに切り替え、任意の情報クライアントを使用してEMQ Xに接続し、接続が成功したら次の情報をメッセージカードに送信します。
{
"id": "NXP-058659730253-963945118132721-22",
"speed": 32.12,
"direction": 198.33212,
"tachometer": 8081,
"dynamical": 8.93,
"location": {
"lng": 116.296011,
"lat": 40.005091
},
"ts": 1563268202
}
送信ボタンをクリックし、Kafkaコマンドを使用してメッセージが正常に生成されたかどうかを確認します。これ
までのところ、ルールエンジンを使用して、ルールエンジンを介してメッセージをKafkaにブリッジするビジネス開発を実現しました。