Rules
EMQXは強力かつ効率的な組み込みデータ処理機能であるルールエンジンを提供しています。SQLライクな構文を活用することで、ユーザーはさまざまなソースからデータを簡単に抽出、変換、強化できます。処理されたデータは、ルールによってトリガーされるアクション(組み込みアクションやSink/Sourceを含む)を通じて外部システムに配布または統合できます。また、処理済みデータをMQTTクライアントやデバイスに再パブリッシュすることも可能です。
ルールエンジンはEMQXのデータ統合機能の中核コンポーネントです。データ統合を用いた柔軟なビジネス統合ソリューションを提供し、ビジネス開発プロセスを簡素化し、ユーザーの利便性を向上させ、ビジネスシステムとEMQX間の結合度を低減します。詳細についてはルールエンジンをご参照ください。
ルールの作成および管理は、左メニューのIntegration -> RulesをクリックしてRulesページにアクセスします。
ルールの作成
ルールを作成するには、Rulesページ右上のCreateをクリックします。また、Connectorページの既存コネクターのAction列からCreate Ruleをクリックして、ルールを素早く作成することもできます。
SQLエディター
ルール作成ページには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/auth/check_authz_complete)
- クライアント認証チェック完了($events/auth/check_authn_complete)
- サブスクライブ済み($events/session/subscribed)
- サブスクライブ解除済み($events/session/unsubscribed)
対応するデータソースはエディター内のSQL文と一致している必要があります。メッセージイベントを使ってデータを取得する場合は、FROMキーワードの後に対応するイベントトピック(括弧内の内容)を記載してください。ルールは複数イベントの利用をサポートしています。データソースやイベントの詳細についてはSQLデータソースとフィールドをご参照ください。
また、テストエリアでルールのテストが可能です。詳細なテスト手順はTest Ruleをご覧ください。

アクション出力
SQL文の編集とルールのデバッグが完了し、要件に合った出力データが得られたら、ページ右側のAction Outputsタブでルールトリガー後に実行するアクションを選択できます。Add Actionボタンをクリックすると、2つの組み込みアクションおよび複数のSink/Sourceタイプのアクションから選択し、ルールの出力データをさらに処理できます。アクションの作成方法の詳細はアクションの追加をご参照ください。
ルールの閲覧
ルール作成後は、ルール一覧でルールID、ルールのアクセス元(イベント、トピック、データブリッジなど)、ルールノート、有効状態、作成日時などの基本情報を確認できます。ルールは設定、削除、有効化、無効化などの操作が可能です。アクションバーからルールの複製および修正もでき、ルールの再利用性を高められます。
一覧上部には検索バーがあり、ルールID、トピック、有効状態、ノートを複数条件で検索できます。これにより、条件に合致するルールを素早く見つけて閲覧・設定できます。なお、ルールIDとノートはあいまい検索に対応し、トピックはワイルドカード検索に対応しています。

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

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