新機能
このページでは、現在のリリースでサポートされている主な新機能を紹介します。EMQXが提供するすべての機能を網羅しているわけではありませんのでご注意ください。
EMQX 6.x シリーズ
セキュリティプロファイル
EMQX 6.3では、ノード全体のセキュリティプロファイルを導入し、後方互換のデフォルト設定とより厳格でセキュアなデフォルト動作の選択が可能になりました。
機能のハイライト
- レガシー互換性:デフォルトの
legacyプロファイルは、以前のEMQXバージョンのデフォルト動作を維持します。 - 強化されたデフォルト設定:
hardenedプロファイルは、リスナーの公開範囲、認証、認可、遅延パブリッシュ、拡張機能、ダッシュボードアクセスを強化します。 - クラスターの一貫性:各ノードのアクティブなプロファイルを確認し、クラスター全体でのプロファイルの違いを検出できます。
起動時にEMQX_SECURITY_PROFILEでプロファイルを選択します。すべてのノードで同じプロファイルを使用し、変更を適用するにはノードを再起動してください。詳細はセキュリティプロファイルをご覧ください。
フィーチャーゲート
EMQX 6.3では、デプロイ時に必要なオプション機能のみを起動するためのフィーチャーゲートを導入しました。
機能のハイライト
- プリセットまたはカスタム選択:
FULL、ESSENTIAL、またはEMQX_FEATURESを使った明示的な機能リストを利用可能。 - 自動依存関係解決:選択した機能に必要な依存関係をEMQXが自動的に有効化します。
- フットプリント削減:
ESSENTIALはコアのMQTTブローカーとアクセス制御機能のみを起動し、オプションの機能アプリケーションは起動しません。 - 一貫したデプロイ:機能選択は起動時に解決され、クラスター内のすべてのノードで同一である必要があります。
詳細はフィーチャーゲートをご覧ください。
強化された可観測性
EMQX 6.3では、MQTTトラフィック、クライアントセッション、外部可観測性プラットフォームの運用可視性を拡大しました。
機能のハイライト
- トピックメトリクスv2:ワイルドカードトピックフィルター、ネームスペース分離、REST APIによる管理、Prometheusエクスポートを備えた名前付きメトリクスコレクションを作成可能。
- セッションバッファの可視化:バッファリングされたペイロードバイト数を追跡し、設定した閾値を超えた場合に警告を発し、
emqx ctl session-topで最大のセッションを特定可能。 - Dynatrace連携:OAuth2トークン認証を用いてOpenTelemetryのトレースとログをDynatraceにエクスポート。
詳細はトピックメトリクス、本番監視のベストプラクティス、およびDynatrace連携をご覧ください。
サブスクリプションフィルター
EMQX 6.2では、MQTT 5.0クライアント向けにサブスクリプションフィルターを導入しました。サブスクライバーはトピックフィルターの後に?で区切ったフィルター条件を追加します。パブリッシャーはトピックに条件を含めず、通常のトピック名を使用し、MQTT 5.0のユーザープロパティで評価用の値を提供します。EMQXはトピックと条件の両方が一致した場合にのみメッセージを配信します。
例えば、sensor/+/temperature?location=roomA&value>25というサブスクリプションは、sensor/1/temperatureにパブリッシュされたメッセージで、ユーザープロパティがlocation=roomAかつvalue=26の場合にマッチします。
機能のハイライト
- 一致するメッセージのみ配信:まずメッセージのトピックを照合し、その後ユーザープロパティに対して条件を評価します。
- 柔軟な式:等価比較や数値比較演算子を使用でき、複数条件は
&で組み合わせ可能。 - ネットワークとクライアント負荷の軽減:サブスクライバーの条件に合わないメッセージの配信を防止します。
- 後方互換のオプトイン:
mqtt.subscription_message_filterで機能を制御。デフォルトは無効で、無効時は?をトピックフィルターの一部として扱います。 - 組み込みの可観測性:フィルター不一致は
delivery.droppedイベントでsubscription_filter理由として報告され、delivery.dropped.filterメトリクスでカウントされます。
詳細はサブスクリプションフィルターのドキュメントをご覧ください。
MQTTストリーム
MQTTストリームは、EMQXに永続的でリプレイ可能なストリーミングモデルを導入し、MQTTのリアルタイムなパブリッシュ/サブスクライブのパラダイムを耐久性のあるメッセージストレージとコンシューマー制御のリプレイ機能で拡張します。
従来のMQTT配信は一時的でサブスクライバーの可用性に依存しますが、MQTTストリームはトピックフィルターにマッチするメッセージを継続的に名前付きの永続ストリームにキャプチャします。各ストリームは固有の名前で識別され、トピックフィルターとは独立して管理されます。
コンシューマーは$stream/<name>または$stream/<name>/<topic_filter>形式でサブスクライブします。リプレイ開始位置はMQTT 5のサブスクリプションプロパティstream-offsetで指定でき、特定のタイムスタンプやearliest、latestなどから過去メッセージを再生可能です。
これにより、EMQXは外部ストリーミングシステムを必要とせずに、ネイティブに履歴メッセージのリプレイ、イベントトレース、保存メッセージに基づく状態復旧をサポートします。
機能のハイライト
- 耐久的なメッセージストリーム:明示的に名前付けされたストリームにMQTTメッセージを永続化し、保持ポリシーを設定可能。
- オフセットベースのリプレイ:コンシューマーは
stream-offsetプロパティでリプレイ位置を制御。 - 通常ストリームとラストバリューストリーム:フルイベントストリームと、ラストバリューセマンティクス有効時にはキーごとに最新メッセージのみを保持する圧縮ストリームをサポート。
- キー単位の順序保証:同じストリームキーを持つメッセージは厳密にパブリッシュ順で配信。
- MQTTネイティブ設計:既存のMQTTパブリッシャーやクライアントの変更は不要。
MQTTストリームにより、EMQXはリアルタイムメッセージングとストリーム処理の両方に適し、アーキテクチャの複雑さを軽減し、新たなIoTやイベント駆動型アプリケーションのクラスを可能にします。
詳細はMQTTストリームのドキュメントをご覧ください。
メッセージキュー
メッセージキューは、EMQX内で信頼性の高いリアルタイムMQTTパブリッシュ/サブスクライブと非同期メッセージキューイングを統合し、外部キューイングサービスを不要にします。
従来のMQTTはサブスクライバーの可用性に依存しますが、メッセージキューはサーバー側でメッセージをバッファリングし、パブリッシャーとサブスクライバーを切り離します。設定されたトピックフィルターにマッチするメッセージは名前付きキューに永続的に保存され、$queue/<name>または$queue/<name>/<topic_filter>形式で後から消費できます。
各キューはトピックフィルターではなく固有の名前で明示的に識別され、フィルタリングルールとは独立して管理、監視、アドレス指定が可能です。
メッセージキューが有効な場合、
$queue/プレフィックスはメッセージキューのサブスクリプションに予約され、共有サブスクリプションには使用できなくなります。

この機能により、MQTTはリアルタイムと遅延処理の両方を扱えるようになり、KafkaやRabbitMQのような外部キューイングシステムを不要にしてIoTシステムのアーキテクチャを簡素化します。メッセージの耐久性、信頼性の高い配信、オフラインバッファリングが重要なシナリオに最適です。
機能のハイライト
- 名前付き永続キュー:明示的に名前付けされたキューにメッセージを保存し、動作を設定可能。
- デカップリングされた配信:パブリッシャーとサブスクライバーはサーバー側のバッファリングによって完全に切り離されます。
- オフラインストレージ:サブスクライバーが切断されていてもメッセージは保持されます。
- ラストバリュー保持:オプションでキー(例:デバイスID)ごとに最新メッセージのみを保持し、センサー読み取り値のような高速変化データに最適。
- 柔軟なディスパッチ戦略:ランダム、ラウンドロビン、最小インフライトサブスクライバーから選択可能で効率的にメッセージを配信。
- 配信保証:永続ストレージとQoS 1配信をサポートし、データ損失を防止。
詳細はメッセージキューのドキュメントをご覧ください。
ネームスペース付きロールによるマルチテナンシー
EMQX 6.0.0では、マルチテナンシーと大規模IoT展開におけるアクセス制御を強化するためにネームスペース付きロールを導入しました。この機能により、ユーザーは特定のネームスペースに割り当てられ、その環境内でルール、コネクター、アクションなどのリソースを管理できます。他のテナントのリソースにはアクセスや影響を与えられません。
ネームスペース付きロールは管理者や閲覧者などの細かい権限をサポートし、ダッシュボード、API、CLIから管理可能で、チームや部署、顧客間の安全な分離を保ちながら責任の委譲を容易にします。
機能のハイライト
- 安全な分離:ユーザーは割り当てられたネームスペース内のリソースのみアクセス・管理可能(例:
ns:team_a::administrator)。 - 細かなアクセス制御:ネームスペースユーザーはネームスペース固有リソースにフルアクセス可能ですが、クラスター全体の設定はグローバル管理者権限がない限り読み取り専用。
- 操作の簡素化:ユーザー作成時にロールの作成・割り当てが容易。
- 企業向けスケーラビリティ:マルチテナントMQTTサービス提供や社内ビジネスユニット管理に最適。
追加の強化点
- 可観測性の向上:ダッシュボードの表示はネームスペースごとにフィルターされ、集中管理が容易に。
- セッショントラッキングの最適化:ネームスペース別のセッション数は1,000未満ならオンデマンド更新、それ以外は5秒毎に更新し、パフォーマンスと精度を向上。
詳細な手順はネームスペース付きロールのユーザー作成をご覧ください。
最適化された耐久ストレージ
EMQX 6.0.0では、耐久ストレージの性能とスケーラビリティを大幅に改善し、高スループットのIoTワークロードに対応可能になりました。セッションデータを他のブローカーメタデータから分離することで、RAM消費を削減し、ストレージ効率を向上させ、ノードあたりの接続数を増加させています。
最適化されたRocksDBパラメータ
新しい設定オプションにより、メモリとパフォーマンスを細かく制御可能です:
durable_storage.messages.rocksdb.write_buffer_size:シャードごとのメムテーブルサイズを制御。durable_storage.messages.rocksdb.cache_size:シャードごとのブロックキャッシュサイズを設定。durable_storage.messages.rocksdb.max_open_files:シャードごとのファイルディスクリプタ数を制限。durable_storage.messages.layout.wildcard_thresholds:ストレージレイアウトにおけるワイルドカード処理を最適化。
追加の強化点
- 効率的なシリアライズ:デフォルトのシリアライズ形式がASN.1に変更され、ストレージサイズ削減と処理速度向上を実現。
- 高速アクセスと低オーバーヘッド:改善されたストレージレイアウトにより、メッセージ取得が高速化し、ディスクおよびメモリのオーバーヘッドを削減。
これらの改善により、EMQXは大規模で永続的なMQTTワークロードを一貫したパフォーマンスで処理可能になりました。
データ統合のサポート拡大
EMQX 6.xはデータ統合機能をさらに強化し、MQTTデータをクラウドやデータベースエコシステムと連携してリアルタイム分析、処理、保存を実現します。
新規統合
EMQX 6.xシリーズで追加された統合:
- Google Bigtable(6.3.0):MQTTデータをBigtableに追記し、スケーラブルで低レイテンシな運用IoTデータの保存と取得を実現。
- Google BigQuery(6.0.0):MQTTデータをBigQueryと連携し、大規模データウェアハウスと高度なクエリで膨大なIoTデータセットから洞察を得る。
- AWS AlloyDB(6.0.0)、CockroachDB(6.0.0)、および**AWS Redshift(6.0.0)**:MQTTデータをこれらの高性能データベースにストリーミングし、リアルタイム分析とスケーラブルな保存を実現。エンタープライズグレードのIoT分析に最適。
強化された統合
新規統合に加え、EMQX 6.xは既存統合の認証、データ管理、パフォーマンス、使いやすさを改善:
- クラウドネイティブ認証(6.3.0):GCP Pub/SubのプロデューサーおよびコンシューマーコネクターとBigQueryコネクターは、アタッチされたサービスアカウントを通じてアクセストークンを取得可能。Amazon MSK接続時は、KafkaのプロデューサーおよびコンシューマーコネクターがAWS IAM Roles Anywhereをサポートし、クレデンシャルヘルパー経由で一時的なAWS認証情報を取得可能。
- Disk Log Connector(6.3.0):時間単位または日単位のファイルローテーションをサポートし、保持期間やローテーションのタイムゾーンを設定可能。
- Snowflake Snowpipe Streaming(6.0.0):Snowpipe Streaming(Snowflakeのプレビュー機能)を介した低レイテンシのSnowflakeテーブルへのデータ取り込みをサポート(AWSホストアカウント向け)。
- RocketMQアクション(6.0.0):
keyおよびtagテンプレートのサポートに加え、柔軟なメッセージルーティングとメタデータ強化のためのkey_dispatch戦略を追加。 - AWS S3およびAWS S3 Tablesコネクター(6.0.0):
access_key_idとsecret_access_keyはオプションとなり、AWSホスト環境ではEC2インスタンスメタデータサービスv2 APIから自動取得可能。 - RabbitMQ Sink(6.0.0):ヘッダーおよびプロパティテンプレートのカスタマイズを可能にし、RabbitMQ内でのメッセージルーティングと互換性を向上。
その他の強化
高度なLLMベースのMQTTデータ処理
EMQX 6.0.0では、OpenAIやAnthropic Claudeに加え、Google Geminiモデルのサポートを追加し、LLMベースのデータ処理を強化しました。
LDAPサポートの強化
LDAP認可はJSON形式の拡張ACLルールをサポートし、LDAP認証はLDAPから直接ACLルールを取得可能で、クライアント側キャッシュも利用できます。
トレース機能の改善
最大トレース数(trace.max_traces)とトレースファイルサイズ(trace.max_file_size)の設定可能な制限を追加。max_file_sizeに達するとトレースログは停止せず新ファイルにローテーションされます。
クラスター管理
新しいcluster.description設定オプションにより、EMQXダッシュボードでカスタムクラスター説明を設定・表示可能です。ダッシュボードでのクラスター説明追加方法はダッシュボード -> 管理 -> クラスター設定をご覧ください。
その他の機能
上記のハイライトに加え、最近のEMQXアップデートには多くの新機能や強化が含まれています。完全な一覧はリリースノートをご参照ください。
破壊的変更
EMQX 6.3で導入された破壊的変更についてはEMQX 6.3の非互換変更をご覧ください。EMQX 5.xから6.0への移行についてはEMQX 5.xと6.0の非互換変更をご参照ください。
EMQX 5.x シリーズ
EMQX 5.xの機能と更新の完全な一覧については、EMQX 5.10 ドキュメント – 新機能をご覧ください。