Я пытаюсь использовать rabbitmq как часть системы уведомлений. У меня есть обмен под названием «notification_events», и очереди в обмене основаны на типах событий, например, «send_account_notification_queue» или «send_tickets_notification_queue». Для отправки конкретным пользователям я планирую привязать userId к соответствующей очереди в качестве ключа маршрутизации. И я уверен, что количество ключей маршрутизации будет расти с увеличением числа пользователей...
Я читал, что иметь тысячи или миллионы очередей — это плохо, но как насчет маршрутизации ключей? Есть ли лучшие способы сделать это? Любая помощь приветствуется и заранее спасибо за ваше время:)
Решение проблемы
Вам действительно нужна очередь для каждого пользователя? Рассматривали ли вы создание одной очереди для каждого типа события и использование userId
для уведомления соответствующего пользователя? Предполагается, что данное пользовательское уведомление выполняется быстро и не может дать сбой только для подмножества пользователей.
Если вам нужна более сложная логика для каждого пользователя (например, изменение порядка событий) или работа с конкретным пользователем, который не может получить событие, тогда система очередей не является правильной абстракцией. Ищите систему оркестровки, такую какtemporal.io, которая поддерживает объект для каждого пользователя с настолько сложной логикой, насколько это необходимо.
См. этот ответ, который объясняет, как Temporal решает эту проблему для системы с аналогичными требованиями.
Комментариев нет:
Отправить комментарий