クイックスタート:ネームスペースの体験
このセクションでは、MQTTXクライアントを使用してEMQXに接続し、ネームスペース機能のコア機能であるテナント識別、クライアント分離、トピック分離を素早く体験する方法を案内します。
ネームスペース識別のために tns 属性を有効化する
まず、
base.hoconにクライアント属性を設定し、ユーザー名からネームスペース(テナント識別子)を抽出します:mqtt.client_attrs_init = [{expression = "nth(1, tokens(username, '-'))", set_as_attr = tns}]例:クライアントがユーザー名
tenantA-user1で接続すると、EMQXはtenantAをネームスペース(tns)として抽出します。または、ダッシュボードからも設定可能です:

MQTTXを使って、テナント
tenantAをシミュレートするMQTTクライアント接続を作成し、ユーザー名をtenantA-user1に設定します。クライアントをEMQXに接続してください。ダッシュボードの Namespace ページに移動し、View Explicitly Created Namespace Only のトグルをオフにします。自動的に作成されたネームスペース
tenantAが表示されるはずです。Actions 列の Clients をクリックすると、このネームスペースに接続しているクライアントを確認できます。

ネームスペース分離の設定と検証
ネームスペース間でクライアントIDとトピックを分離するために、以下の設定を
base.hoconに追加します:mqtt.clientid_override = "concat([client_attrs.tns, '-', clientid])" listener.tcp.default.mountpoint = "${client_attrs.tns}/"この設定により:
- クライアントIDにテナントプレフィックスが自動的に付加され、衝突を回避します。
- トピック名にネームスペースプレフィックスが自動的に付加され、テナント間でトピックレベルの分離が実現します。
ダッシュボードからも設定可能です:


MQTTXを使って、2つのMQTTクライアント接続を作成し、2つのテナント
tenantAとtenantBをシミュレートします。クライアントA(テナント:tenantA):
パラメータ 値 Client ID client1Username tenantA-user1Subscribe test/topicクライアントB(テナント:tenantB):
パラメータ 値 Client ID client1Username tenantB-user2Publish test/topicクライアントBでメッセージをパブリッシュし、MQTTXおよびEMQXダッシュボードで結果を確認します:
- 両クライアントは同じクライアントID(
client1)を使用していますが、プレフィックスルールによりtenantA-client1とtenantB-client1として接続され、衝突を回避しています。 - 両クライアントは同じトピック(
test/topic)を使用していますが、クライアントAはネームスペースで分離されているため、クライアントBがパブリッシュしたメッセージを受信しません。 - ダッシュボードの Monitoring -> Clients ページでは:
- クライアントAのサブスクライブしているトピックは
tenantA/test/topicと表示されます。 - クライアントBのパブリッシュしたトピックは
tenantB/test/topicと表示されます。
- クライアントAのサブスクライブしているトピックは
- 両クライアントは同じクライアントID(