Client ID collision for MQTT, possibility to set our own ClientID in rabbitmq server #5959
Unanswered
armourshield
asked this question in
Questions
Replies: 1 comment
-
Here is where the client ID is parsed: Your best bet may be to use a custom TCP proxy to modify the client ID before it reaches your MQTT server. |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
Hi All,
This is a wild question in terms of Q&A, we have a product which is scattered across the field using MQTT protocol to send data to our platform.
Problem
We are using cloud provider AWS for hosting our platform. The packet rate at which we are hitting our system is to high, which there by needs clustering for MQTT, you can do so much by vertical scaling AWS Services.
MQTT Server Problem
Our company is exploring into options for clustering, but there is a twist on what we are looking for.
The product which is live has one bug, the ClientID which the subscriber and publisher is sending are same across all the device.
As the product is live we can't change it for the foreseen future until a fix has been approved and moreover Eclipse Mosquito Server doesn't offer clustering and we are looking for alternatives.
Current Solution:
We were using a custom-flavored image of Eclipse Mosquito Server. It was customized to accommodate Client ID collision by overriding the packet which comes in and replace the same ClientID with '-', this is unique in our case which we found out and it solved our problem of colliding ClientID. The custom-flavored Eclipse Mosquito Server works but it is not scalable as AWS EC2 Network are hitting with packet high rates and we need to use NLB to distribute packets across a MQTT Cluster.
Question/Doubt
Is there possibility in rabbitmq to change the incoming packet->clientID by using the '-' as it's clientID. I have done local development setup of rabbitmq in WSL, ran it yesterday, I am amateur in erlang. After little digging, found that plugin is in rabbitmq/deps/rabbitmq_mqtt (https://github.com/rabbitmq/rabbitmq-server/tree/main/deps/rabbitmq_mqtt/src). Will be doing more exploring on this, any pointers or any tips will be really appreciated.
I understand how it can complicate things when playing around with clientID as it acts identifier for queues etc, the idea is to try to have a fix in rabbitmq so we can switch our servers without downtime in AWS and receive data from the remote devices which are in production.
I am open to any ideas other than the questions I am asking.
Many thanks.
Beta Was this translation helpful? Give feedback.
All reactions