Support MQTT QoS 2 package flow #10376
-
Is your feature request related to a problem? Please describe.We want to switch from the Mosquitto MQTT broker to RabbitMQ but have a lot of clients in the field that publish MQTT messages with QoS 2. When the client publishes a message with Qos 2, their connection gets closed, presumably because the MQTT broker returns a PUBACK package instead of a PUBREC. Our clients uses the C++ library libmosquittopp. Describe the solution you'd likeWhen enabeling a setting, have RabbitMQ MQTT plugin, follow the QoS 2 package flow(PUBLISH -> PUBREC -> PUBREL -> PUBCOMP) when a message is published with QoS 2. Enabling this setting will only enable the QoS 2 package flow without the "exactly once" promise by RabbitMQ. Describe alternatives you've consideredWe have no option to solve this on the client side as we don't have an option to update the clients in the field our selves. Additional contextPublishing QoS 2 messages with
|
Beta Was this translation helpful? Give feedback.
Replies: 1 comment
-
I'm afraid that's not how things work: if we claim to support the protocol part of QoS 2, we must provide at least a very significant majority of the guarantees behind it, and we don't plan to, at least at the moment. To not recipe the entire discussion one more time, our team generally does not believe that QoS 2 provides any additional data safety in practice. So we spend our time on other things, like supporting MQTTv5 (shipping in RabbitMQ 3.13), reworking AMQP 1.0 from scratch and moving it into the core, and so on. We fully admit that this means that some folks, for valid or "check box ticking" reasons, will have to look elsewhere. |
Beta Was this translation helpful? Give feedback.
I'm afraid that's not how things work: if we claim to support the protocol part of QoS 2, we must provide at least a very significant majority of the guarantees behind it, and we don't plan to, at least at the moment.
To not recipe the entire discussion one more time, our team generally does not believe that QoS 2 provides any additional data safety in practice. So we spend our time on other things, like supporting MQTTv5 (shipping in RabbitMQ 3.13), reworking AMQP 1.0 from scratch and moving it into the core, and so on.
We fully admit that this means that some folks, for valid or "check box ticking" reasons, will have to look elsewhere.