我的系统中有数千个移动设备。它们连接到我的中央服务器。我需要有一种机制来根据特定设备遵循的某些事件更新它们(按主题通知)。假设我在服务器上聊天,移动用户可以关注任何聊天,并希望在聊天中有效地接收新消息的通知。主要移动平台是Android。
我正在考虑使用主题(每个聊天)使用消息传递:Kafka或RabbitMQ。 请提供有利于移动消费者的建议。
答案 0 :(得分:1)
Kafka和RabbitMQ是完全不同的方法。 Kafka是一个日志存储系统(即一个有序的消息序列),RabbitMQ只是排队和路由。
我正在设计一个事件采购系统。我用:
RabbitMQ可以很好地扩展到数千个队列,并允许客户端定义RPC和简单安全性所需的私有队列(未命名,临时,单个使用者,排除)。客户端通常需要在集群上执行特定功能,或者只读取一组过滤的事件(并非所有事件),因为它们的带宽有限。理论上,可以使用kafka,但现在有几个挑战(即主题限制,独占队列,自动删除等)。
Kafka(+ samza)是一个非常好的事件采购工具(即浏览消息历史)和实时流处理(自动重放,重启过程等)。扩展不是必需的,因为它是集成,高度可靠性和恢复。
答案 1 :(得分:0)
MQTT似乎是解决您问题的好方法。基本上它体积小,重量轻,效率高,并且非常适合电池寿命(参见MQTT used by facebook messenger)。
此外,MQTT是OASIS标准,并且有许多兼容的代理,其中一些允许管理数百万个并发连接(例如JoramMQ是used in very scalable applications)。