时间消息/直通队列

我正在建立一个网站,接收有关足球比赛的实时更新。 我正在使用RabbitMQ将更新发送到客户端(JS网站和Android / iOS应用程序)。

客户只应该收到实时更新。 换句话说,客户端只应在用户登录时接收更新。不保存历史记录。

为了实现这种行为,我正在考虑以下架构:

  • RabbitMQ的粉丝交换。
  • 每个用户都有一个专用队列,该队列绑定到交换机。 该队列在创建用户帐户时创建。
  • 对于这些队列,设置值为0的队列属性x-message-ttl 。 见下文。
  • 当用户登录时,客户端使用相应用户的队列。
  • 消息由后端发送到交换机,并转发到所有队列。 当用户未登录时,消息将立即丢弃,因为x-message-ttl设置为0。
  • 这是AMQP / RabbitMQ实现实时通知的正确用法吗?


    是和否 - 你的一些前提是错误的。

  • In other words, a client should only receive updates when the user is logged in.当用户未登录时,只需将连接放到RMQ即可。
  • Each user has a dedicated queue, which is bound to the exchange. This queue is created when the user account is created. 只有在建立与RMQ的连接后才能创建队列,这样您还可以覆盖When a user is not logged in, the message will be discarded immediately
  • 无需将TTL设置为0。
  • Messages are sent to the exchange by the backend, and forwarded to all queues为了清楚起见,它是从交换到队列“转发”的RabbitMQ。
  • 链接地址: http://www.djcxy.com/p/34075.html

    上一篇: time messages/passthrough queue

    下一篇: AMQP gem for rails is requeuing hundreds of successfully processed messages