I am looking for a tool which will allow me to push messages from a server to server clients (using the pub/sub pattern). I have already looked at some
WebSockets implementation, and if we go in that direction, it will be
Now I am looking for another option - a message broker. The main reason I am also searching for a broker solution, is mainly requirement number 5 in the below points:
clients are implemented with React. Server is implemented using .NET core - which means the broker should support the use of C#. All clients run the same app and there are no several different protocols to consider.
The message broker should work behind IIS, not Apache.
The clients needs to receive messages with data as it's ready. They shouldn't ask every time interval for new data (polling). Since the messages should only be sent once when the data is ready, avoiding message loss is important. Also because of that, the ability to receive ACK/NACK on messages is important.
clients should be grouped to different groups - about 5 different groups with about 50 clients in each group. Each group can send 2 messages per second. Each message size is about 1kb. Because of that I'm hoping to use a simpler broker, which is easy to use and configure.
If the broker server dies, another one should automatically be chosen in its place (not sure if that what is called clustering?)
For internal reasons,
RabbitMQ can't be used.
Redis at first sounded promising, but then I read there could be some message loss using it, so it's also off the table.
Kafka is not right, because it must rely on
ZooKeeper, which doesn't mix well with Windows and IIS.
What broker do you believe is best suited for these requirements?