Skip to content

新機能 ​

このページでは、現在のリリースでサポートされている主な新機能を紹介します。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 は、ユーザープロパティが location=roomA かつ value=26 のメッセージが sensor/1/temperature にパブリッシュされた場合にマッチします。

機能のハイライト ​

  • 一致するメッセージのみ配信: まずメッセージのトピックをマッチさせ、その後ユーザープロパティに対して条件を評価します。
  • 柔軟な式: 等価比較や数値比較演算子を使用でき、複数条件は & で結合可能です。
  • ネットワークとクライアント負荷の軽減: サブスクライバーの条件に合わないメッセージの配信を防止します。
  • 後方互換のオプトイン: 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/ プレフィックスはメッセージキューのサブスクリプションに予約され、共有サブスクリプションには使用できなくなります。

message_queue_routing_overview

この機能により、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): 大規模データウェアハウスと高度なクエリを可能にし、膨大なIoTデータセットから洞察を得るためにMQTTデータと統合。
  • 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): SnowflakeのSnowpipe Streaming(プレビュー機能)を介した低レイテンシデータ取り込みをサポートし、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内の互換性向上のため、HeadersおよびPropertiesテンプレートのカスタマイズを可能に。

その他の強化 ​

高度な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 ドキュメント – 新機能をご覧ください。