activemq-artemis/examples/features/standard
Justin Bertram 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.
2023-09-13 11:28:53 +01:00
..
auto-closeable [maven-release-plugin] prepare for next development iteration 2023-07-20 14:39:21 -05:00
broker-msg-auth-plugin [maven-release-plugin] prepare for next development iteration 2023-07-20 14:39:21 -05:00
broker-plugin [maven-release-plugin] prepare for next development iteration 2023-07-20 14:39:21 -05:00
browser [maven-release-plugin] prepare for next development iteration 2023-07-20 14:39:21 -05:00
camel [maven-release-plugin] prepare for next development iteration 2023-07-20 14:39:21 -05:00
cdi [maven-release-plugin] prepare for next development iteration 2023-07-20 14:39:21 -05:00
client-kickoff ARTEMIS-4409 update examples to use management.xml 2023-09-01 13:33:33 -05:00
completion-listener [maven-release-plugin] prepare for next development iteration 2023-07-20 14:39:21 -05:00
consumer-rate-limit [maven-release-plugin] prepare for next development iteration 2023-07-20 14:39:21 -05:00
context [maven-release-plugin] prepare for next development iteration 2023-07-20 14:39:21 -05:00
core-bridge [maven-release-plugin] prepare for next development iteration 2023-07-20 14:39:21 -05:00
database [maven-release-plugin] prepare for next development iteration 2023-07-20 14:39:21 -05:00
dead-letter [maven-release-plugin] prepare for next development iteration 2023-07-20 14:39:21 -05:00
delayed-redelivery [maven-release-plugin] prepare for next development iteration 2023-07-20 14:39:21 -05:00
divert ARTEMIS-966 MQTT subscription state isn't durable 2023-09-13 11:28:53 +01:00
durable-subscription [maven-release-plugin] prepare for next development iteration 2023-07-20 14:39:21 -05:00
embedded [maven-release-plugin] prepare for next development iteration 2023-07-20 14:39:21 -05:00
embedded-simple [maven-release-plugin] prepare for next development iteration 2023-07-20 14:39:21 -05:00
exclusive-queue [maven-release-plugin] prepare for next development iteration 2023-07-20 14:39:21 -05:00
expiry [maven-release-plugin] prepare for next development iteration 2023-07-20 14:39:21 -05:00
http-transport [maven-release-plugin] prepare for next development iteration 2023-07-20 14:39:21 -05:00
instantiate-connection-factory [maven-release-plugin] prepare for next development iteration 2023-07-20 14:39:21 -05:00
interceptor [maven-release-plugin] prepare for next development iteration 2023-07-20 14:39:21 -05:00
interceptor-amqp [maven-release-plugin] prepare for next development iteration 2023-07-20 14:39:21 -05:00
interceptor-client [maven-release-plugin] prepare for next development iteration 2023-07-20 14:39:21 -05:00
interceptor-mqtt [maven-release-plugin] prepare for next development iteration 2023-07-20 14:39:21 -05:00
jms-bridge [maven-release-plugin] prepare for next development iteration 2023-07-20 14:39:21 -05:00
jmx [maven-release-plugin] prepare for next development iteration 2023-07-20 14:39:21 -05:00
jmx-ssl [maven-release-plugin] prepare for next development iteration 2023-07-20 14:39:21 -05:00
large-message [maven-release-plugin] prepare for next development iteration 2023-07-20 14:39:21 -05:00
last-value-queue [maven-release-plugin] prepare for next development iteration 2023-07-20 14:39:21 -05:00
management [maven-release-plugin] prepare for next development iteration 2023-07-20 14:39:21 -05:00
management-notifications [maven-release-plugin] prepare for next development iteration 2023-07-20 14:39:21 -05:00
message-counters [maven-release-plugin] prepare for next development iteration 2023-07-20 14:39:21 -05:00
message-group [maven-release-plugin] prepare for next development iteration 2023-07-20 14:39:21 -05:00
message-group2 [maven-release-plugin] prepare for next development iteration 2023-07-20 14:39:21 -05:00
message-priority [maven-release-plugin] prepare for next development iteration 2023-07-20 14:39:21 -05:00
netty-openssl [maven-release-plugin] prepare for next development iteration 2023-07-20 14:39:21 -05:00
no-consumer-buffering [maven-release-plugin] prepare for next development iteration 2023-07-20 14:39:21 -05:00
opentelemetry [maven-release-plugin] prepare for next development iteration 2023-07-20 14:39:21 -05:00
paging [maven-release-plugin] prepare for next development iteration 2023-07-20 14:39:21 -05:00
pre-acknowledge [maven-release-plugin] prepare for next development iteration 2023-07-20 14:39:21 -05:00
producer-rate-limit [maven-release-plugin] prepare for next development iteration 2023-07-20 14:39:21 -05:00
queue [maven-release-plugin] prepare for next development iteration 2023-07-20 14:39:21 -05:00
queue-jakarta [maven-release-plugin] prepare for next development iteration 2023-07-20 14:39:21 -05:00
queue-requestor [maven-release-plugin] prepare for next development iteration 2023-07-20 14:39:21 -05:00
queue-selector [maven-release-plugin] prepare for next development iteration 2023-07-20 14:39:21 -05:00
reattach-node [maven-release-plugin] prepare for next development iteration 2023-07-20 14:39:21 -05:00
request-reply [maven-release-plugin] prepare for next development iteration 2023-07-20 14:39:21 -05:00
scheduled-message [maven-release-plugin] prepare for next development iteration 2023-07-20 14:39:21 -05:00
security [maven-release-plugin] prepare for next development iteration 2023-07-20 14:39:21 -05:00
security-keycloak [maven-release-plugin] prepare for next development iteration 2023-07-20 14:39:21 -05:00
security-ldap [maven-release-plugin] prepare for next development iteration 2023-07-20 14:39:21 -05:00
security-manager [maven-release-plugin] prepare for next development iteration 2023-07-20 14:39:21 -05:00
send-acknowledgements [maven-release-plugin] prepare for next development iteration 2023-07-20 14:39:21 -05:00
shared-consumer [maven-release-plugin] prepare for next development iteration 2023-07-20 14:39:21 -05:00
slow-consumer [maven-release-plugin] prepare for next development iteration 2023-07-20 14:39:21 -05:00
spring-boot-integration ARTEMIS-4395 Upgrade spring-boot-plugin version to 2.6.15 2023-08-22 12:21:16 +01:00
spring-integration [maven-release-plugin] prepare for next development iteration 2023-07-20 14:39:21 -05:00
ssl-enabled [maven-release-plugin] prepare for next development iteration 2023-07-20 14:39:21 -05:00
ssl-enabled-crl-mqtt [maven-release-plugin] prepare for next development iteration 2023-07-20 14:39:21 -05:00
ssl-enabled-dual-authentication [maven-release-plugin] prepare for next development iteration 2023-07-20 14:39:21 -05:00
static-selector [maven-release-plugin] prepare for next development iteration 2023-07-20 14:39:21 -05:00
temp-queue [maven-release-plugin] prepare for next development iteration 2023-07-20 14:39:21 -05:00
topic [maven-release-plugin] prepare for next development iteration 2023-07-20 14:39:21 -05:00
topic-hierarchies [maven-release-plugin] prepare for next development iteration 2023-07-20 14:39:21 -05:00
topic-selector1 [maven-release-plugin] prepare for next development iteration 2023-07-20 14:39:21 -05:00
topic-selector2 [maven-release-plugin] prepare for next development iteration 2023-07-20 14:39:21 -05:00
transactional [maven-release-plugin] prepare for next development iteration 2023-07-20 14:39:21 -05:00
xa-heuristic ARTEMIS-4409 update examples to use management.xml 2023-09-01 13:33:33 -05:00
xa-receive [maven-release-plugin] prepare for next development iteration 2023-07-20 14:39:21 -05:00
xa-send [maven-release-plugin] prepare for next development iteration 2023-07-20 14:39:21 -05:00
pom.xml [maven-release-plugin] prepare for next development iteration 2023-07-20 14:39:21 -05:00