新機能
このページでは、現在のリリースでサポートされている主な新機能を紹介します。EMQXが提供するすべての機能を網羅しているわけではありませんのでご注意ください。
EMQX 6.1.1(最新)
MQTT Streams
MQTT Streamsは、EMQXに永続的でリプレイ可能なストリーミングモデルを導入し、MQTTのリアルタイムなパブリッシュ/サブスクライブのパラダイムを拡張して、耐久性のあるメッセージストレージとコンシューマー制御のリプレイ機能を実現します。
従来のMQTT配信は一時的でサブスクライバーの可用性に依存しますが、MQTT Streamsはトピックフィルターにマッチするメッセージを継続的にキャプチャし、名前付きの永続ストリームに保存します。各ストリームは固有の名前で識別され、トピックフィルターとは独立して管理されます。
コンシューマーは$stream/<name>または$stream/<name>/<topic_filter>形式でサブスクライブします。リプレイの開始位置はMQTT 5のサブスクリプションプロパティstream-offsetで指定でき、クライアントは特定のタイムスタンプやearliest、latestなど任意の位置から過去のメッセージをリプレイ可能です。
これにより、外部のストリーミングシステムを必要とせずに、EMQXがネイティブに過去メッセージのリプレイ、イベントトレース、保存メッセージに基づく状態復旧をサポートします。
機能のハイライト
- 耐久的なメッセージストリーム:MQTTメッセージを明示的に名前付けされたストリームに永続化し、保持ポリシーを設定可能。
- オフセットベースのリプレイ:
stream-offsetサブスクリプションプロパティでリプレイ位置をコンシューマーが制御。 - 通常ストリームと最終値ストリーム:フルイベントストリームと、最終値セマンティクス有効時にはキーごとに最新メッセージのみを保持する圧縮ストリームをサポート。
- キー単位の順序保証:同じストリームキーを持つメッセージは厳密にパブリッシュ順に配信。
- MQTTネイティブ設計:既存のMQTTパブリッシャーやクライアントの変更は不要。
MQTT Streamsにより、EMQXはリアルタイムメッセージングとストリーム処理の両方に適し、アーキテクチャの複雑さを軽減し、新たなIoTやイベント駆動型アプリケーションの実現を可能にします。
詳細はMQTT Streamsドキュメントをご参照ください。
Message Queue
Message Queueは、EMQX内で信頼性の高いリアルタイムMQTTパブリッシュ/サブスクライブと非同期メッセージキューイングを統合し、外部キューイングサービスを不要にします。
従来のMQTTはサブスクライバーの可用性に依存しますが、Message Queueはサーバー側でメッセージをバッファリングし、パブリッシャーとサブスクライバーを切り離します。設定されたトピックフィルターにマッチするメッセージは名前付きキューに永続的に保存され、$queue/<name>または$queue/<name>/<topic_filter>形式で後から消費可能です。
各キューはトピックフィルターではなく固有の名前で明示的に識別されるため、フィルタリングルールとは独立して管理、監視、アクセスが可能です。
Message Queueが有効な場合、
$queue/プレフィックスはMessage Queueのサブスクリプション用に予約され、共有サブスクリプションには使用できなくなります。

この機能により、MQTTはリアルタイムと遅延処理の両方を扱えるようになり、KafkaやRabbitMQのような外部キューイングシステムを不要にしてIoTシステムのアーキテクチャを簡素化します。メッセージの耐久性、信頼性の高い配信、オフラインバッファリングが重要なシナリオに最適です。
機能のハイライト
- 名前付き永続キュー:明示的に名前付けされたキューにメッセージを保存し、動作を設定可能。
- デリバリーの切り離し:サーバー側バッファリングによりパブリッシャーとサブスクライバーを完全に切り離し。
- オフライン保存:サブスクライバーが切断されていてもメッセージを保持。
- 最終値保持:キー(例:デバイスID)ごとに最新メッセージのみを保持するオプション。センサーの高速変化データに最適。
- 柔軟なディスパッチ戦略:ランダム、ラウンドロビン、最小インフライトサブスクライバーから選択可能で効率的な配信を実現。
- 配信保証:永続化ストレージとQoS 1配信をサポートし、データ損失を防止。
詳細はMessage Queueドキュメントをご覧ください。
ネームスペース付きロールによるマルチテナンシー
EMQX 6.0.0では、マルチテナンシーと大規模IoT展開におけるアクセス制御を強化するためにネームスペース付きロールを導入しました。この機能により、ユーザーは特定のネームスペースに割り当てられ、ルール、コネクター、アクションなどのリソースを他のテナントに影響を与えずに管理できます。
ネームスペース付きロールは、管理者や閲覧者などの細かな権限をサポートし、ダッシュボード、API、CLIから管理可能です。これによりチームや部署、顧客間での責任分担を容易にし、安全な分離を実現します。
機能のハイライト
- 安全な分離:ユーザーは割り当てられたネームスペース内のリソースのみアクセス・管理可能(例:
ns:team_a::administrator)。 - 細かなアクセス制御:ネームスペースユーザーはネームスペース固有リソースにフルアクセス可能だが、クラスター全体の設定はグローバル管理者権限がない限り読み取り専用。
- 運用の簡素化:ユーザー作成時にロールを簡単に作成・割り当て可能。
- 企業向けスケーラビリティ:マルチテナントMQTTサービス提供や内部事業部門の分離管理に最適。
追加の改善点
- 観測性の向上:ダッシュボードの表示はネームスペースごとにフィルタリングされ、集中管理が容易に。
- セッショントラッキングの最適化:ネームスペース別セッション数は1,000未満ならオンデマンド更新、そうでなければ5秒ごとに更新し、パフォーマンスと精度を向上。
詳細な手順はネームスペース付きロールのユーザー作成をご参照ください。
最適化された耐久ストレージ
EMQX 6.0.0では耐久ストレージの性能とスケーラビリティを大幅に改善しました。セッションデータを他のブローカーメタデータから分離することで、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.0.0はデータ統合機能をさらに強化し、MQTTデータを最新のクラウドやデータベースエコシステムとシームレスに連携し、リアルタイム分析、処理、保存を可能にします。
新規統合
EMQX 6.0.0で新たに追加された統合:
- Google BigQuery:大規模データウェアハウスと高度なクエリのためにMQTTデータをBigQueryと連携し、膨大なIoTデータセットから洞察を得る。
- AWS AlloyDB、CockroachDB、AWS Redshift:高性能データベースへのMQTTデータストリーミングを実現し、リアルタイム分析とスケーラブルな保存に最適。エンタープライズグレードのIoT分析に適合。
既存統合の強化
新規統合に加え、EMQX 6.0.0は既存統合の性能、使いやすさ、クラウドネイティブ対応を向上:
- Snowflake Snowpipe Streaming:Snowflakeのプレビュー機能であるSnowpipe Streamingによる低レイテンシデータ取り込みをサポート(AWSホストアカウント向け)。
- RocketMQアクション:
keyおよびtagテンプレートのサポート追加と、柔軟なメッセージルーティングとメタデータ付加のためのkey_dispatch戦略を追加。 - AWS S3およびAWS S3 Tablesコネクター:
access_key_idとsecret_access_keyがオプション化され、AWSホスト環境ではEC2インスタンスメタデータサービスv2 APIから自動取得可能に。 - RabbitMQシンク:ヘッダーおよびプロパティテンプレートのカスタマイズが可能になり、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 5.xとEMQX 6.0の互換性のない変更をご覧ください。
EMQX 5.xシリーズ
EMQX 5.xの機能および更新の完全な一覧については、EMQX 5.10ドキュメント – 新機能をご参照ください。