What: Delete bindings of exclusive durable queues after an unclean shutdown. Why: Native MQTT in 3.12 uses only durable queues to ease transition to Khepri. Since auto-delete queues are not deleted after an unclean shutdown, Native MQTT uses exclusive (instead of auto-delete) queues for clean sessions. While this bug is not specific to Native MQTT, this bug is most relevant for the upcoming 3.12 release since exclusive durable queues are rarely used otherwise. How: During queue recovery, not all bindings are recovered yet. Therefore, if, during queue recovery, an exclusive, durable queue need to be deleted, only durable bindings should be queried. Queue types need to make sure that their exclusive, durable queues including their bindings are deleted before starting with binding recovery. Otherwise binding deletion and binding recovery get interleaved leading to topic bindings being created and left behind. Therefore, a classic queue process replies to the recovery process after it deleted its queue record and associated bindings from the database. |
||
|---|---|---|
| .. | ||
| include | ||
| priv/schema | ||
| src | ||
| test | ||
| .gitignore | ||
| BUILD.bazel | ||
| CODE_OF_CONDUCT.md | ||
| CONTRIBUTING.md | ||
| LICENSE | ||
| LICENSE-MPL-RabbitMQ | ||
| Makefile | ||
| README.md | ||
README.md
RabbitMQ MQTT Plugin
Getting Started
This is an MQTT plugin for RabbitMQ.
The plugin is included in the RabbitMQ distribution. To enable it, use rabbitmq-plugins:
rabbitmq-plugins enable rabbitmq_mqtt
Default port used by the plugin is 1883.
Documentation
MQTT plugin documentation is available from rabbitmq.com.
Contributing
See CONTRIBUTING.md.
Running Tests
After cloning RabbitMQ umbrella repository, change into the rabbitmq-mqtt directory
and run
make tests
This will bring up a RabbitMQ node with the plugin enabled and run integration tests
against it. Note that there must be no other MQTT server running on ports 1883 and 8883.
Copyright and License
(c) 2007-2020 VMware, Inc. or its affiliates.
Released under the Mozilla Public License, the same as RabbitMQ.