【发布时间】:2014-06-03 05:48:22
【问题描述】:
我们已经在android中实现了rabbitmq聊天。但是rabbitmq的java客户端很耗电。rabbitmq适合android聊天吗?我们已经使用直接交换个人队列和个人路由键。 rabbitmq中一对一聊天的最佳设计模式是什么。 以及减少电池使用量的方法
【问题讨论】:
我们已经在android中实现了rabbitmq聊天。但是rabbitmq的java客户端很耗电。rabbitmq适合android聊天吗?我们已经使用直接交换个人队列和个人路由键。 rabbitmq中一对一聊天的最佳设计模式是什么。 以及减少电池使用量的方法
【问题讨论】:
我不认为直接使用 RabbitMQ 来开发聊天是更好的解决方案。
还有其他更轻松的解决方案请阅读这个post关于MQTT。
另一种标准解决方案是使用XMPP 协议(例如whatsup 使用自定义XMPP)。
我们做了一些测试,我们也遇到了一些关于电池消耗的问题。
顺便说一句,您可以混合使用这些技术,将 RabbitMQ 混合为后端,将其他一些服务器(XMPP、MQTT)混合为前端。
阅读此post 以了解 MQTT。
Facebook Messenger 使用的 MQTT
编辑
我会添加这个帖子MQTT vs. XMPP Which Should I Choose?
EDIT2
【讨论】:
也许您可以将 RabbitMQ 与 GCM 结合起来以节省电力,因为 GCM 由系统触发并且不需要保持任何额外的连接。
例如:
当有任何新事件出现时,应用会通过 GCM 收到通知。 然后建立一个新的 Rabbit 连接,检索数据并再次超时,如果没有消息再次进入。
因此,真正的“饥饿感”只存在很短的时间,并且只在必要时存在。
您还可以分析哪些用户倾向于总是将多条消息紧挨着写,并根据该值改变超时时间
【讨论】:
我认为实时传递的聊天应用程序是通过网络即时发送消息,而不是可靠性。可靠性是指确认收货与交货。但是实时聊天应用程序并不能确定它。 RabbitMQ 是一个消息代理服务器,它首先致力于可靠性,但它不负责实时消息通信。您可以使用 RabbitMQ 进行实时通信,但有时可能不是实时的。
您可以使用STOMP-WebSocket(用于简单消息传递)、Firebase(用于即时消息传递),但最专业和可用的协议是XMPP(可扩展消息传递和存在协议)进行实时通信。
如果您对此答案有任何建议或疑问,请让我在下面发表评论。
【讨论】: