I have thousands of mobile devices in my system. They are connected to my central server. I need to have a mechanism for updating them based on some event that monitors certain devices (notify by topic). Let's say I have chats on the server, and the mobile user can follow any chat and wants to receive notifications of new chat messages efficiently. The primary mobile platform is Android.
I am going to use messaging using a theme (for each chat): Kafka or RabbitMQ. Please give advice, which is good for mobile consumers.
Honestly, my recommendation is that you are not trying to build it yourself. There are tons of pitfalls you'll come across - a lot more before you even zoom in. You need to worry about things like dropping network connections, synchronization, downloading data, processing messages with lots of messages - the list goes on. BTW, my previous company, which built the application and had more than 500 engineers, also tried to build it - and failed.
I know, because we built it - it's called Magnet Message. See what we have at http://developer.magnet.com . We created the concept of channels precisely for what you say and ways to reliably deliver these messages.
Let me know how this happens to you.
Kafka RabbitMQ - . Kafka - ( ), RabbitMQ - .
. :
RabbitMQ (, , , ), RPC . ( ) - . , kafka , (, , , autodelete ..).
Kafka (+ samza) - (.. ) ( , ..). , , .
MQTT seems like a good solution to your problem. It is mostly small, lightweight, efficient and very good for battery life (see MQTT used by facebook messenger ).
In addition, MQTT is an OASIS standard and there are many compatible brokers, some of which allow you to manage several million simultaneous connections (for example, JoramMQ is used in highly scalable applications ).
Source: https://habr.com/ru/post/1626152/More articles:Converting a JSON array to a list of Java class objects - javavba read all text in a text file? - vbaHow can I add school_id to my path? - ruby | fooobar.comSubstitution of one matrix onto another matrix - runittest cannot detect / run tests - pythonLack of add-on for AES encryption on Java card - cryptographytype match failed on map - scalaProperty with getter only against getter and private setter - c #dplyr has problems with type overrides with group_by () - rWhy is this object considered an rvalue? - c ++All Articles