I have a distributed application written in Node.js and want to broadcast messages to all of the nodes. What I need is:
- Guaranteed delivery (at least once)
- Horizontal scalability
- Completely dezentralized architecture
So far, I have taken a look at the various modules for Node.js such as Scuttlebutt, node-gossip & all of its variants. But they all fail with respect to guaranteed delivery.
I also have taken a look at Serf and Consul: While the first failed with the guaranteed delivery, the second only works if at least (n/2)+1 nodes are reachable, which is too weak for my application.
I have also taken a look at various message queues, message distribution systems and protocols such as RabbitMQ, nsq and MQTT. They all fail for one or more of the above mentioned things.
Any idea how I could solve this (without having to go write my own one)?
PS: I know that this is basically a question for an advice for a module or a tool, but I don't know where else to ask, and I think that the intention is a perfectly valid one for any developer working on distributed applications.