【问题标题】:Can RabbitMQ be used for one to one conversations?RabbitMQ 可以用于一对一的对话吗?
【发布时间】:2014-04-04 07:58:49
【问题描述】:

我想做某种电子邮件或短信服务器。

您向RabbitMQ 发送带有标签“pseudo”的消息,用户“pseudo”收听带有标签“pseudo”的消息。

但是在教程RabbitMQ 中没有提到这一点。有主题,路由键,... 这看起来很相似,但在我看来,每个“主题”/“标签”/...必须有 1 个队列 我想知道您是否可以拥有非常多的队列,或者 RabbitMQ 是否不适合这种用法。谢谢

【问题讨论】:

  • 为什么这些需要不同的队列?您可以让不同的用户订阅不同的主题,然后您可以发布到这些特定主题以将消息发送给特定的人。恕我直言,您可以只有一个 MQ 来建立这个系统。
  • @Alpay 所以 1 个队列用于所有消息,而我所说的“标签”是一个主题?即客户会做 queue.consume(topic=my_username, callback...) 吗?从文档看来主题与队列不同
  • 主题是某种消息的标识符。假设您有 2 个客户,clientAclientB,他们订阅了同名的主题。当你想放一条应该被clientA消费的消息时,你需要把它和主题clientA一起放。请注意,主题可以具有层次结构并接受通配符,因此如果您设计得当,您可以向多个客户发送消息。
  • @Alpay 我在文档 (basic_consume) 中没有看到要查看的标签/主题的任何参数。您如何观看队列并说您只想听 clientApika.readthedocs.org/en/latest/modules/channel.html
  • @Alpay 在 RabbitMQ 教程中,新建一个临时队列,绑定到与主题过滤器的交换。这工作正常,但在接收者唤醒之前发送到队列的消息会丢失。

标签: rabbitmq


【解决方案1】:

是的,你可以,

基本实现很简单。

您可以创建一个主题Exchange,例如称为“conversations”,然后您可以使用路由键为每个用户绑定一个持久队列。

队列数量不是问题,因为您的系统必须扩展,而 RabbitMQ 可以毫无问题地扩展。

无论如何,我认为问题不在于队列数量,而是有其他最适合实现您的系统的技术。

XMPP就是其中之一,我试过ejabbed但还有其他服务器。

WhatsApps 示例使用自定义 XMPP。

另一个问题是如何集成移动应用程序,使用XMPP你可以找到一些现成的库,如https://github.com/robbiehanson/XMPPFramework

【讨论】:

    猜你喜欢
    • 2011-01-16
    • 1970-01-01
    • 1970-01-01
    • 2010-09-09
    • 2015-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多