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
+/barmatches any topic with a single-level prefix followed by/bar.The specific subscription
foo/barmatches 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.yamlfile.Set the
DOCKER_VERNEMQ_DEDUPLICATE_OVERLAPPING_SUBSvalue toon(enable) oroff(disable).
global:
broker:
env:
- name: DOCKER_VERNEMQ_DEDUPLICATE_OVERLAPPING_SUBS
value: on # Set to "off" to disable deduplicationEnabling/Disabling Deduplication on Docker
Create or modify a
docker-compose.override.ymlfile.In the
docker-compose.override.ymlfile, set theDOCKER_VERNEMQ_DEDUPLICATE_OVERLAPPING_SUBSvariable toon(enable) oroff(disable).
services:
broker:
environment:
DOCKER_VERNEMQ_DEDUPLICATE_OVERLAPPING_SUBS: on # Set to "off" to disable deduplicationLast updated
Was this helpful?

