Skip to content

Conversation

@crazyrokr
Copy link
Collaborator

@crazyrokr crazyrokr commented Nov 19, 2025

Initial implementation of retain message feature

3 MQTT Control Packets
3.3 PUBLISH – Publish message
    └ 3.3.1 PUBLISH Fixed Header
        └ 3.3.1.3 RETAIN

  1. If a client publishes a message with RETAIN flag, then the message is retained within the corresponding topic name
  2. If a client subscribes to a topic filter, then all retained messages within topic names matching the topic filter are automatically released to the client
  3. If during the releasing of retained messages a target subscription has retainAsPublished=0 then RETAIN flag is set to 0 in the forwarder publish message

# Conflicts:
#	model/src/main/java/javasabr/mqtt/model/subscriber/tree/ConcurrentRetainedMessageTree.java
#	model/src/main/java/javasabr/mqtt/model/subscriber/tree/ConcurrentSubscriberTree.java
#	model/src/main/java/javasabr/mqtt/model/subscriber/tree/RetainedMessageNode.java
#	model/src/main/java/javasabr/mqtt/model/subscriber/tree/SubscriberNode.java
#	model/src/main/java/javasabr/mqtt/model/subscriber/tree/SubscriberTreeBase.java
#	model/src/main/java/javasabr/mqtt/model/subscribtion/tree/ConcurrentSubscriptionTree.java
#	model/src/main/java/javasabr/mqtt/model/subscribtion/tree/TopicFilterNode.java
#	model/src/main/java/javasabr/mqtt/model/subscribtion/tree/TopicFilterTreeBase.java
#	model/src/main/java/javasabr/mqtt/model/topic/tree/ConcurrentTopicTree.java
#	model/src/main/java/javasabr/mqtt/model/topic/tree/TopicNode.java
#	model/src/main/java/javasabr/mqtt/model/topic/tree/TopicTreeBase.java
#	model/src/test/groovy/javasabr/mqtt/model/topic/tree/SubscriberTreeTest.groovy
#	service/src/main/java/javasabr/mqtt/service/impl/InMemorySubscriptionService.java
crazyrokr and others added 5 commits November 20, 2025 08:15
# Conflicts:
#	application/src/main/java/javasabr/mqtt/broker/application/config/MqttBrokerSpringConfig.java
#	core-service/src/main/java/javasabr/mqtt/service/impl/InMemorySubscriptionService.java
#	core-service/src/test/groovy/javasabr/mqtt/service/message/handler/impl/SubscribeMqttInMessageHandlerTest.groovy
@github-actions
Copy link

github-actions bot commented Dec 1, 2025

Test Coverage Report

Overall Project 84.39% -0.22% 🍏
Files changed 95.74% 🍏

File Coverage
SubscriptionResult.java 100% 🍏
ConcurrentRetainedMessageTree.java 100% 🍏
InMemorySubscriptionService.java 100% 🍏
SharedTopicFilter.java 100% 🍏
SubscriptionService.java 100% 🍏
SubscriberTreeBase.java 100% 🍏
SubscriberNode.java 100% 🍏
Qos0MqttPublishOutMessageHandler.java 100% 🍏
TrackableMqttPublishInMessageHandler.java 100% 🍏
SubscribeMqttInMessageHandler.java 99.77% -0.23% 🍏
Publish.java 98.95% 🍏
Subscription.java 98.25% -1.75% 🍏
RetainedMessageNode.java 97.66% -2.34% 🍏
AbstractTrieNode.java 96.55% -3.45% 🍏
AbstractTopic.java 94% 🍏
QoS.java 91.57% -8.43%
MqttBrokerSpringConfig.java 90.63% 🍏
DefaultPublishDeliveringService.java 84.47% 🍏
Qos1MqttPublishInMessageHandler.java 80.6% 🍏
InMemoryRetainMessageService.java 78.57% -21.43% 🍏
Qos2MqttPublishInMessageHandler.java 66.46% -3.66% 🍏
AbstractMqttPublishInMessageHandler.java 63.14% -1.57% 🍏
AbstractMqttPublishOutMessageHandler.java 62.16% 🍏
Qos0MqttPublishInMessageHandler.java 52.5% 🍏

@crazyrokr crazyrokr linked an issue Dec 5, 2025 that may be closed by this pull request
# Conflicts:
#	core-service/src/main/java/javasabr/mqtt/service/SubscriptionService.java
#	core-service/src/main/java/javasabr/mqtt/service/impl/InMemorySubscriptionService.java
#	core-service/src/main/java/javasabr/mqtt/service/publish/handler/impl/AbstractMqttPublishOutMessageHandler.java
#	core-service/src/main/java/javasabr/mqtt/service/publish/handler/impl/PersistedMqttPublishOutMessageHandler.java
#	core-service/src/main/java/javasabr/mqtt/service/publish/handler/impl/Qos0MqttPublishOutMessageHandler.java
#	core-service/src/main/java/javasabr/mqtt/service/publish/handler/impl/Qos1MqttPublishOutMessageHandler.java
#	core-service/src/main/java/javasabr/mqtt/service/publish/handler/impl/Qos2MqttPublishOutMessageHandler.java
@crazyrokr crazyrokr marked this pull request as ready for review December 7, 2025 14:18
@crazyrokr crazyrokr requested a review from JavaSaBr December 7, 2025 16:04
@crazyrokr crazyrokr added enhancement New feature or request core labels Dec 7, 2025
@crazyrokr crazyrokr requested a review from JavaSaBr December 13, 2025 09:18
@crazyrokr crazyrokr requested a review from JavaSaBr December 20, 2025 00:57
@crazyrokr crazyrokr requested a review from JavaSaBr December 21, 2025 15:09
@crazyrokr crazyrokr requested a review from JavaSaBr December 24, 2025 19:58
@crazyrokr crazyrokr merged commit ef8c634 into develop Dec 25, 2025
6 checks passed
@crazyrokr crazyrokr deleted the feature-broker-30 branch December 25, 2025 11:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

core enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Implement Retained Messages

3 participants