1

我们的网站有大约 50,000 名用户,每日活跃流量相当不错。我们正在为我们的用户群设计一个新的通知功能。

我们的要求如下:

  1. 用户属于不同的组。
  2. 一个用户可以是多个组的一部分。
  3. 当用户在组中上传图像时,该特定组的所有成员都应该收到“新图像上传”的通知,无论是在线还是离线。

我们考虑为每个用户创建每个组和队列的rabbitmq交换。但是在设计正确的方式前感到困惑!

比如说,即使用户在通知生成后几天登录站点,他也应该收到通知。我们最终将消息存储在数据库中,这对离线用户来说根本不是一件好事。

有人可以建议适当的设计模式并解释这个用例吗?我们正在使用 celery + rabbitmq + tornado。龙卷风应该直接与芹菜消费者对话吗?用户离线时消息存储在哪里?

4

1 回答 1

0

我有类似的项目。那么它是如何工作的:

  • 将消息从您的事件源(django、celery、无处不在)发送到您的兔子队列
  • 您可以使用 pika+tornado IOLoop(所以当消息到达 tornado 时,您将通过 pika loop 收到通知,当请求来自 http 或通过 Tornado 连接 websocket 时)
  • 使用 TornaodApplication websockets 中打开的集合为用户发送消息

您可以通过我的 github 上的 torando+rabbitmq 记录非常接近的项目:https ://github.com/rmuslimov/RapidLog

于 2012-07-15T13:18:55.083 回答