[ 
https://issues.apache.org/jira/browse/ARTEMIS-966?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17764584#comment-17764584
 ] 

ASF subversion and git services commented on ARTEMIS-966:
---------------------------------------------------------

Commit af2672e79a597e46af297a943f34bbb937a0c9b7 in activemq-artemis's branch 
refs/heads/main from Justin Bertram
[ https://gitbox.apache.org/repos/asf?p=activemq-artemis.git;h=af2672e79a ]

ARTEMIS-966 MQTT subscription state isn't durable

Durable subscrption state is part of the MQTT specification which has
not been supported until now. This functionality is implemented via an
internal last-value queue. When an MQTT client creates, updates, or
adds a subscription a message using the client-ID as the last-value is
sent to the internal queue. When the broker restarts this data is read
from the queue and populates the in-memory MQTT data-structures.
Therefore subscribers can reconnect and resume their session's
subscriptions without have to manually resubscribe.

MQTT state is now managed centrally per-broker rather than in the
MQTTProtocolManager since there is one instance of MQTTProtocolManager
for each acceptor allowing MQTT connections. Managing state per acceptor
would allow odd behavior with clients connecting to different acceptors
with the same client ID.

The subscriptions are serialized as raw bytes with a "version" byte for
potential future use, but I intentionally avoided adding complex
scaffolding to support multiple versions. We can add that complexity
later if necessary.

Some tests needed to be changed since instantiating an MQTT protocol
manager now creates an internal queue. A handful of tests assume that no
queues will exist other than the ones they create themselves. I updated
the main test super-class so that an MQTT protocol manager is not
automatically instantiated when configuring a broker for in-vm support.


> MQTT Session States do not survive a reboot
> -------------------------------------------
>
>                 Key: ARTEMIS-966
>                 URL: https://issues.apache.org/jira/browse/ARTEMIS-966
>             Project: ActiveMQ Artemis
>          Issue Type: Improvement
>          Components: MQTT
>            Reporter: Martyn Taylor
>            Assignee: Justin Bertram
>            Priority: Major
>          Time Spent: 2h 20m
>  Remaining Estimate: 0h
>




--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to