【问题标题】:using rabbitmq in android for chat在android中使用rabbitmq进行聊天
【发布时间】:2014-06-03 05:48:22
【问题描述】:

我们已经在android中实现了rabbitmq聊天。但是rabbitmq的java客户端很耗电。rabbitmq适合android聊天吗?我们已经使用直接交换个人队列和个人路由键。 rabbitmq中一对一聊天的最佳设计模式是什么。 以及减少电池使用量的方法

【问题讨论】:

    标签: android rabbitmq amqp


    【解决方案1】:

    我不认为直接使用 RabbitMQ 来开发聊天是更好的解决方案。

    还有其他更轻松的解决方案请阅读这个post关于MQTT。

    另一种标准解决方案是使用XMPP 协议(例如whatsup 使用自定义XMPP)。

    我们做了一些测试,我们也遇到了一些关于电池消耗的问题。

    顺便说一句,您可以混合使用这些技术,将 RabbitMQ 混合为后端,将其他一些服务器(XMPP、MQTT)混合为前端。

    阅读此post 以了解 MQTT。

    Facebook Messenger 使用的 MQTT

    编辑

    我会添加这个帖子MQTT vs. XMPP Which Should I Choose?

    EDIT2

    请阅读官方rabbitmq-group上的thisthis

    【讨论】:

    • 但是mqtt不保留离线消息,这不是人们寻求内置队列解决方案的主要原因吗?
    【解决方案2】:

    也许您可以将 RabbitMQ 与 GCM 结合起来以节省电力,因为 GCM 由系统触发并且不需要保持任何额外的连接。

    例如:

    当有任何新事件出现时,应用会通过 GCM 收到通知。 然后建立一个新的 Rabbit 连接,检索数据并再次超时,如果没有消息再次进入。

    因此,真正的“饥饿感”只存在很短的时间,并且只在必要时存在。

    您还可以分析哪些用户倾向于总是将多条消息紧挨着写,并根据该值改变超时时间

    【讨论】:

      【解决方案3】:

      我认为实时传递的聊天应用程序是通过网络即时发送消息,而不是可靠性。可靠性是指确认收货与交货。但是实时聊天应用程序并不能确定它。 RabbitMQ 是一个消息代理服务器,它首先致力于可靠性,但它不负责实时消息通信。您可以使用 RabbitMQ 进行实时通信,但有时可能不是实时的。

      您可以使用STOMP-WebSocket(用于简单消息传递)、Firebase(用于即时消息传递),但最专业和可用的协议是XMPP(可扩展消息传递和存在协议)进行实时通信。

      如果您对此答案有任何建议或疑问,请让我在下面发表评论。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-06-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-03-07
        • 2015-11-20
        • 1970-01-01
        相关资源
        最近更新 更多