Skip to content

ルール

EMQXは強力かつ効率的な組み込みデータ処理機能であるルールエンジンを提供しています。SQLに似た構文を活用することで、ユーザーはさまざまなソースからデータを簡単に抽出、変換、強化できます。処理されたデータは、ルールによってトリガーされるアクション(組み込みアクションやSink/Sourceを含む)を通じて外部システムに配布または統合できます。また、処理済みデータをMQTTクライアントやデバイスに再パブリッシュすることも可能です。

ルールエンジンはEMQXのデータ統合機能の中核コンポーネントです。データ統合を活用した柔軟なビジネス統合ソリューションを提供し、ビジネス開発プロセスを簡素化し、ユーザーの使いやすさを向上させ、ビジネスシステムとEMQX間の結合度を低減します。詳細はルールエンジンをご参照ください。

ルールの作成および管理は、左メニューのIntegration -> RulesをクリックしてRulesページにアクセスします。

ルールの作成

ルールを作成するには、Rulesページ右上のCreateをクリックします。また、Connectorページの既存コネクターのAction列からCreate Ruleをクリックして素早くルールを作成することも可能です。

SQLエディター

Create RuleページにはSQLエディターがあり、SQL文を使ってルールロジックを定義できます。これにより、クライアントやシステム間で交換されるデータのリアルタイムな操作(クエリ、フィルタリング、変換、強化)が可能です。

ルールを識別・整理するために、ルールIDと任意のメモを入力します。ルールIDは自動で一意に生成されますが、自分で指定することもできます。メモ欄はルールの目的を簡潔に説明するために使います。

SQLエディター下のSQL Examplesをクリックすると、右側に一般的なSQL例が表示されます。以下のSQL例を参考にして素早くルールを作成できます。

画像

デフォルトのSQL文は SELECT * FROM "t/#" で、これはクライアントがトピック t/# にメッセージをパブリッシュした際に、ルールエンジンがそのイベント下のすべてのデータを取得することを意味します。

SELECT キーワードはメッセージ内のすべてのフィールドを取得できます。例えば、現在のメッセージのPayloadだけを取得したい場合は、SELECT payload from "t/#" に変更します。データは組み込み関数を使って処理・変換可能です。

FROM キーワードの後には1つ以上のデータソースが続きます。利用可能なイベントトピックは、SQLエディター下のTry It Outエリアで確認できます。WHERE キーワードを使って条件フィルタリングを追加できます。詳細なSQL構文の使い方はSQL構文と例をご覧ください。

Try It Out

SQL文が完成したら、ページ下部のTry It Outトグルスイッチをオンにして、このエリアでルールのテストを実行できます。

SQLテストでは、Data Sourceドロップダウンからイベントやデータソースを選択し、シミュレーション用のテストデータを入力してRun Testをクリックすると、右側のOutput Resultに実行結果が表示されます。

SQL文を変更するたびにこのテストを行い、ルールの正確性を確認できます。

TIP

SQL実行時に412エラーコードが表示される場合、テストデータとの不一致が原因の可能性があります。データソースがSQL文に合わない場合は、対応するイベントやデータソースの選択を促されます。更新されたデータソースイベントに合わせてテストデータも自動更新されます。

シミュレーション用データソースは実際のシナリオと同様で、いくつかのMQTTイベントを含みます。メッセージ部分では、以下の異なるメッセージイベントを選択してデータをシミュレートできます。

  • メッセージパブリッシュ(mqtt topic)
  • メッセージ配信済み($events/message_delivered)
  • メッセージアック済み($events/message_acked)
  • メッセージ破棄($events/message_dropped)

その他のイベントでは、以下のクライアントおよびセッションイベントを選択してデータをシミュレート可能です。

  • クライアント接続($events/client_connected)
  • クライアント切断($events/client_disconnected)
  • クライアントconnack($events/client_connack)
  • クライアント認可完了($events/client_check_authz_complete)
  • クライアント認証完了($events/client_check_authn_complete)
  • サブスクライブ済み($events/session_subscribed)
  • サブスクライブ解除済み($events/session_unsubscribed)

対応するデータソースはエディター内のSQL文と一致している必要があります。メッセージイベントを使ってデータを取得する場合は、FROMキーワードの後に対応するイベントトピック(括弧内の内容)をSQL文に記述してください。ルールは複数イベントの使用をサポートします。データソースやイベントの詳細はSQLデータソースとフィールドをご覧ください。

テストエリアでルールを検証することも可能です。詳細なテスト手順はルールのテストをご参照ください。

画像

アクション出力

SQL文の編集とルールのデバッグが完了し、要件を満たす出力データが得られたら、ページ右側のAction Outputsタブでルールトリガー後に実行するアクションを選択できます。Add Actionボタンをクリックすると、2つの組み込みアクションや各種Sink/Sourceなどのアクションタイプを選択して、ルールの出力データをさらに処理できます。アクションの作成方法の詳細はアクションの追加をご覧ください。

ルールの表示

ルール作成後、ルールリストでルールの基本情報を確認できます。表示される情報には、ルールID、ルールがアクセスするデータソース(イベント、トピック、データブリッジなど)、ルールメモ、有効状態、作成日時が含まれます。ルールは設定、削除、有効化、無効化などの操作が可能です。また、アクションバーからルールを複製して修正し、ルールの再利用性を高めることもできます。

リスト上部には検索バーがあり、ルールID、トピック、有効状態、メモを複数条件で検索できます。これにより、条件に合致するルールを素早く見つけて表示・設定できます。なお、ルールIDとメモはあいまい検索に対応し、トピックはワイルドカード検索に対応しています。

image

ルール実行統計

ルールリストページでルールIDをクリックすると、ルール概要ページに素早く移動できます。ルール概要ページには、ルールの基本的なデータ統計情報が含まれ、ルールの実行統計や当該ルール下のアクション実行統計が表示されます。例えば、マッチ数、通過数、失敗数、ルールの実行率、アクションの成功・失敗実行数などです。右上のRefreshボタンをクリックすると、現在のルールのリアルタイム実行データ統計を確認できます。

image

設定

ルールリストのAction列にあるSettingsボタン、またはSettingsタブをクリックすると設定ページに入れます。ここにはルールの基本情報が表示され、ルール作成ページと同様の内容です。このページでルールの修正やデバッグが可能です。例えば、現在のルール下の実行アクションの変更、ルールメモの修正、SQL文の再編集などが行えます。

image