【问题标题】:System architecture for location-based message system using message queues使用消息队列的基于位置的消息系统的系统架构
【发布时间】:2012-09-22 03:30:36
【问题描述】:

我目前正在设计一个移动应用程序,该应用程序可以根据用户位置向时间轴发送和读取消息。实际开发版本是使用 ActiveMQ 发送和消费消息,但还没有完成,所以我更愿意在继续开发之前定义架构应该如何避免将来出现问题。我不确定这是不是正确的方法,但这是我的想法:

  • 每个用户都是向其队列发送消息的生产者。队列名称可以是用户的唯一 ID。
  • 如果距离足够近,用户可以订阅其他用户队列。这涉及到一组用户队列的主题。该队列应该是动态的,通过检索固定半径内的用户生成,该半径是圆的中心,即消费者的位置。每个用户都有自己的 Topicqueue,就像这个(与 Twitter 的时间线非常相似的概念)。这意味着每个用户队列将有多个消费者。

在客户端,我一直在使用 Objective-C stomp 客户端作为与队列的连接协议。

我的问题是,这是解决问题的好方法吗?我不确定使用 ActiveMQ 和 Topics 的用户订阅近用户是可行的架构。您对这个时间线订阅问题有什么建议吗?另一方面,我很清楚每个用户都需要成为自己队列的生产者,但也许我也错了。

编辑

任何包含有关该主题的更多信息的参考、链接、书籍等都将受到高度赞赏。

【问题讨论】:

    标签: ios database-design architecture activemq message-queue


    【解决方案1】:

    一个问题是添加一个新用户意味着添加一个新队列。这是怎么做的?这不会限制您的系统可以支持的用户数量吗?

    您可以让您的用户生成消息以发送到主题并注册为消费者。

    另一种方法是非阻塞 IO 和Netty

    【讨论】:

    • 该解决方案的问题在于,用户必须注册一个通常不代表他所在区域的现有主题。它类似于预先存在的手机单元,用户进入或退出固定单元,但不是它的中心。
    • 你必须把注册表放在中间。
    【解决方案2】:

    顶一下,关于这个的一些想法......

    • 使用主题而不是队列将消息“广播”给多个订阅者等。
    • 在我看来,基于位置的动态订阅不太适合 JMS 技术
    • 考虑使用内置地理空间(又名基于位置)索引/搜索功能的工具(如 mongoDB 或空间数据库)

    【讨论】:

    • 我一直在想这个,我有个想法。我正在考虑使用主题而不是队列(我仍然必须处理持久性问题)来创建基于位置的聊天室,而不是用于直接的用户通信。另外,为了检索最近的聊天室,您认为将这些聊天室存储在具有地理空间索引的 mongoDB 中而不是 PostgreSQL 中更好吗?
    猜你喜欢
    • 2011-01-18
    • 1970-01-01
    • 1970-01-01
    • 2015-11-19
    • 1970-01-01
    • 2017-03-16
    • 1970-01-01
    • 1970-01-01
    • 2012-04-10
    相关资源
    最近更新 更多