使用消息队列的基于位置的消息系统的系统体系结构

时间:2012-10-01 09:28:22

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

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

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

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

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

修改

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

2 个答案:

答案 0 :(得分:1)

关闭顶部,对此有几点想法......

  • 使用主题而不是队列向多个订阅者“广播”消息等。
  • 基于位置动态订阅似乎不适合我的JMS技术
  • 考虑使用内置地理空间(也就是基于位置)内置索引/搜索的内容(如mongoDB或空间数据库)

答案 1 :(得分:0)

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

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

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

相关问题