Skip to main content
Version: 2.4

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.ipstringrequiredIP 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": {                "ip": "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.