Skip to main content
Version: 2.7

mqtt-proxy

Summary#

Name#

The plugin mqtt-proxy only works in stream model, it help you to dynamic load balance by client_id of MQTT.

And this plugin both support MQTT protocol 3.1.* and 5.0.

Attributes#

NameTypeRequirementDefaultValidDescription
protocol_namestringrequiredName of protocol, should be MQTT in normal.
protocol_levelintegerrequiredLevel of protocol, it should be 4 for MQTT 3.1.*. it should be 5 for MQTT 5.0.
upstream.hoststringrequiredthe IP or host of upstream, will forward current request to.
upstream.ipstringdeprecatedUse "host" instead. IP address of upstream, will forward current request to.
upstream.portnumberrequiredPort of upstream, will forward current request to.

How To Enable#

To enable this plugin, we need to enable the stream_proxy configuration in conf/config.yaml first. For example, the following configuration represents listening on the 9100 TCP port.

    ...    router:        http: 'radixtree_uri'        ssl: 'radixtree_sni'    stream_proxy:                 # TCP/UDP proxy      tcp:                        # TCP proxy port list        - 9100    dns_resolver:    ...

Then send the MQTT request to port 9100.

Creates a stream route, and enable plugin mqtt-proxy.

curl http://127.0.0.1:9080/apisix/admin/stream_routes/1 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '{    "remote_addr": "127.0.0.1",    "plugins": {        "mqtt-proxy": {            "protocol_name": "MQTT",            "protocol_level": 4,            "upstream": {                "host": "127.0.0.1",                "port": 1980            }        }    }}'

Delete Plugin#

$ curl http://127.0.0.1:2379/v2/keys/apisix/stream_routes/1 -X DELETE

The mqtt-proxy plugin has been deleted now.