Configuring CybusMQ
Duplicate Message Delivery in MQTT Clients
When a client subscribes to multiple topics that can match the same published message (e.g., using wildcards), CybusMQ can be configured to either:
Send a single message (deduplication enabled, default behavior)
Send multiple messages (deduplication disabled)
Use Cases
Enabled deduplication: Ensures that each client processes a message only once, regardless of subscription patterns.
Disabled deduplication: When your application specifically requires receiving multiple copies of messages for overlapping subscriptions, such as certain protocol-mapping scenarios.
Example
A client subscribes to +/bar
and foo/bar
:
The wildcard subscription
+/bar
matches any topic with a single-level prefix followed by/bar
.The specific subscription
foo/bar
matches only the exact topicfoo/bar
.
When a message is published to foo/bar
, both subscriptions match this topic.
With deduplication enabled:
Client receives: 1 message
{
"topic": "foo/bar",
"payload": "Hello World"
}
With deduplication disabled:
Client receives: 2 messages
{
"topic": "foo/bar", // From first subscription match
"payload": "Hello World"
}
{
"topic": "foo/bar", // From second subscription match
"payload": "Hello World"
}
Enabling/Disabling Deduplication
By default, CybusMQ deduplicates messages for overlapping subscriptions. This means a client will receive only one copy of a message even if multiple subscriptions match the published topic.
To allow clients to receive multiple copies of the same message when they have overlapping subscriptions, you can disable deduplication.
Enabling/Disabling Deduplication on Kubernetes
Prerequisite
Your Helm chart is version 1.5.0 or later.
Procedure
Open your
values.yaml
file.Set the
DOCKER_VERNEMQ_DEDUPLICATE_OVERLAPPING_SUBS
value toon
(enable) oroff
(disable).
global:
broker:
env:
- name: DOCKER_VERNEMQ_DEDUPLICATE_OVERLAPPING_SUBS
value: on # Set to "off" to disable deduplication
Last updated
Was this helpful?