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.
Name | Type | Requirement | Default | Valid | Description |
---|---|---|---|---|---|
protocol_name | string | required | Name of protocol, shoulds be MQTT in normal. |
||
protocol_level | integer | required | Level of protocol, it should be 4 for MQTT 3.1.* . it should be 5 for MQTT 5.0 . |
||
upstream.ip | string | required | IP address of upstream, will forward current request to. | ||
upstream.port | number | required | Port of upstream, will forward current request to. |
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
}
}
}
}'
$ curl http://127.0.0.1:2379/v2/keys/apisix/stream_routes/1 -X DELETE
The mqtt-proxy
plugin has been deleted now.