私たちのウェブサイトには約 50,000 人のユーザーがおり、毎日のアクティブなトラフィックはかなり良好です。ユーザーベース向けの新しい通知機能を設計しています。
私たちの要件は次のとおりです。
- ユーザーは異なるグループの一部です。
- ユーザーは複数のグループに所属できます。
- ユーザーがグループ内の画像をアップロードすると、その特定のグループのすべてのメンバーは、オンラインまたはオフラインに関係なく、「新しい画像がアップロードされました」という通知を受け取る必要があります。
グループごとにrabbitmq交換を作成し、ユーザーごとにキューを作成することを考えました。しかし、正しい方法で設計するのに混乱しました!!
たとえば、通知が生成されてから数日後にユーザーがサイトにログインしたとしても、ユーザーは通知を受け取るはずです。最終的にメッセージを DB に保存することになりましたが、これはオフライン ユーザーにとってはまったく良いことではありません。
誰かがこのユースケースの説明とともに適切な設計パターンを提案できますか? セロリ + rabbitmq + トルネードを使用しています。トルネードはセロリの消費者に直接話しかけるべきですか? ユーザーがオフラインの場合、メッセージはどこに保存されますか?