0

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

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

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

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

编辑

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

4

2 回答 2

1

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

  • 使用主题而不是队列将消息“广播”给多个订阅者等。
  • 基于位置的动态订阅对我来说似乎不太适合 JMS 技术
  • 考虑使用带有地理空间(又名基于位置)索引/搜索内置的东西(如mongoDB或空间数据库)
于 2012-10-02T02:50:25.820 回答
0

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

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

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

于 2012-10-01T09:39:57.613 回答