rabbitmq-server/deps/rabbitmq_mqtt
David Ansari 0130d3ac36 Clean up exclusive durable queues after unclean shutdown
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.
2023-03-23 21:59:19 +00:00
..
include Use integer as will message correlation 2023-03-01 12:52:44 +01:00
priv/schema Add validator for non negative integer 2023-03-07 14:35:28 +01:00
src Clean up exclusive durable queues after unclean shutdown 2023-03-23 21:59:19 +00:00
test Clean up exclusive durable queues after unclean shutdown 2023-03-23 21:59:19 +00:00
.gitignore Support code coverage 2022-11-10 15:04:31 +01:00
BUILD.bazel Add missing BEAM file 2023-03-02 10:25:07 +01:00
CODE_OF_CONDUCT.md Replace files with symlinks 2022-04-15 06:04:29 -07:00
CONTRIBUTING.md Replace files with symlinks 2022-04-15 06:04:29 -07:00
LICENSE
LICENSE-MPL-RabbitMQ Revert drop of Exhibit B on MPL 2.0 2020-07-20 17:01:38 +01:00
Makefile Bump emqx/emqtt to 1.8.2 2023-02-21 17:25:19 +01:00
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.

(c) 2007-2020 VMware, Inc. or its affiliates.

Released under the Mozilla Public License, the same as RabbitMQ.