EMQX 4.4 と EMQX 5.1 間のゲートウェイ互換性
本ページでは、EMQX 4.4 と EMQX 5.1 間のゲートウェイ設定の互換性情報を紹介します。
共通の互換性変更点
設定
EMQX 4.x では、ゲートウェイは etc/plugins/emqx_stomp.conf
のような設定ファイルや、ダッシュボード上のモジュール(POST http://127.0.0.1:18084/api/v4/modules
インターフェース)を通じて設定できます。
EMQX 5.1 では、すべてのゲートウェイ設定は etc/emqx.conf
または PUT http://127.0.0.1:18083/api/v5/gateways/coap
で行います。
例えば、EMQX 4.x では:
stomp.listener = 61613
stomp.listener.acceptors = 4
stomp.listener.max_connections = 512
#stomp.listener.ssl = off
stomp.default_user.login = guest
stomp.default_user.passcode = guest
stomp.allow_anonymous = true
stomp.frame.max_headers = 10
stomp.frame.max_header_length = 1024
stomp.frame.max_body_length = 8192
EMQX 5.x では:
gateway.stomp {
mountpoint = "stomp/"
frame {
max_headers = 10
max_headers_length = 1024
max_body_length = 65536
}
listeners.tcp.default {
bind = "0.0.0.0:61613"
}
}
HTTP API やダッシュボードによる管理
EMQX 4.x では、管理用の専用 HTTP API やウェブページはありません。例えば、MQTT-SN のデバイス一覧を取得するには GET http://127.0.0.1:8081/api/v4/clients?protocol=mqtt-sn
を使用し、MQTT デバイス(および他のプロトコル、例:CoAP、LwM2M など)とのクエリインターフェースが統合されています。
EMQX 5.x では、これらの機能を実現するために専用のインターフェースを多数提供しています。例えば、GET /api/v5/gateways/mqttsn/clients
や以下の新規 HTTP API があります:
また、クライアント管理、ゲートウェイ設定、リスナー管理などの専用ダッシュボードページも提供しています。
リスナー
EMQX 4.x では、各ゲートウェイごとにリスナー設定のフォーマットが異なっていました。しかし EMQX 5.1 では、すべてのリスナー設定フォーマットが統一されています。
例えば、EMQX 4.x では:
## etc/plugins/emqx_stomp.conf
stomp.listener = 61613
stomp.listener.acceptors = 4
stomp.listener.max_connections = 512
## etc/plugins/emqx_sn.conf
mqtt.sn.port = 1884
## etc/plugins/emqx_coap.conf
coap.bind.udp.1 = 0.0.0.0:5683
coap.bind.dtls.1 = 0.0.0.0:5684
## etc/plugins/emqx_lwm2m.conf
lwm2m.bind.udp.1 = 0.0.0.0:5683
lwm2m.bind.dtls.1 = 0.0.0.0:5684
EMQX 5.x では、すべてのプロトコルゲートウェイで同じフォーマットを使用します。Exproto ゲートウェイの例:
## etc/emqx.conf または base.hocon (EMQX 5.9 以降)
gateway.exproto {
listeners.tcp.default {
bind = "0.0.0.0:7993"
}
listeners.ssl.default {
bind = "0.0.0.0:7994"
cacertfile = ..
certfile = ..
keyfile = ..
}
listeners.udp.default { ... }
listeners.dtls.default { ... }
}
認証
EMQX 4.x では、各ゲートウェイは MQTT 用のハイブリッド認証で設定されていました。
EMQX 5.0 以降は、ゲートウェイごとに別々の認証機構を設定する必要があります。例:
gateway.coap {
...
authentication {
backend = "http"
method = "post"
url = "http://127.0.0.1:8080/auth"
headers {"content-type" = "application/json"}
body {password = "${password}", username = "${username}"}
}
}
プロトコル機能および設定項目の非互換性
Stomp
stomp.default_user.login
、stomp.default_user.passcode
、および stomp.allow_anonymous
は EMQX 5.x で削除されました。
MQTT-SN
- DTLS タイプのリスナーは EMQX 5.1 でサポートされていますが、EMQX 4.x では未対応です。
mqtt.sn.username
、mqtt.sn.password
、mqtt.sn.subs_resume
は削除されていません。mqtt.sn.advertise_duration
はgateway.mqttsn.broadcast
に名称変更されました。
ExProto
以前の ConnectionAdapter サービス設定フォーマット:
exproto.server.http.port = 9100
exproto.server.https.port = 9101
exproto.server.https.cacertfile = etc/certs/cacert.pem
exproto.server.https.certfile = etc/certs/cert.pem
exproto.server.https.keyfile = etc/certs/key.pem
現在は:
gateway.exproto {
server {
bind = "0.0.0.0:9100"
ssl_options {verify = "verify_none"}
}
}
以前の ConnectionHandler 設定はリスナー上にありました:
exproto.listener.protoname.connection_handler_url = http://127.0.0.1:9001
#exproto.listener.protoname.connection_handler_certfile =
#exproto.listener.protoname.connection_handler_cacertfile =
#exproto.listener.protoname.connection_handler_keyfile =
現在は:
gateway.exproto {
handler {
address = "http://127.0.0.1:9001"
ssl_options {enable = false}
}
}
つまり、5.0 以降はリスニングポートごとに異なる ConnectionHandler サービスアドレスを指定できません。
CoAP
CoAP プロトコルの実装仕様は完全に再設計されました。
新しい設計については CoAP を参照してください。
LwM2M
以前のオプション構造:
lwm2m.topics.command = dn/#
lwm2m.topics.response = up/resp
lwm2m.topics.notify = up/notify
lwm2m.topics.register = up/resp
lwm2m.topics.update = up/resp
現在の構造:
gateway.lwm2m {
translators {
command {qos = 0, topic = "dn/#"}
notify {qos = 0, topic = "up/notify"}
register {qos = 0, topic = "up/resp"}
response {qos = 0, topic = "up/resp"}
update {qos = 0, topic = "up/update"}
}
}