1

В рамках изменения нашего приложения от гигантского монолита до микрофона Мы разрабатываем Notification micro-service, который может использоваться всеми другими модулями для отправки уведомлений, таких как электронная почта, SMS , Push-уведомления и т. Д.AKKA.NET - Queuing and Retry

Один клиент этой службы уведомлений - это служба Windows, которую мы планируем разработать, которая запускает уведомления по электронной почте для различных событий, таких как Регистрация пользователя, Сброс пароля и т. Д. Служба окон будет иметь 2 части

  1. API, основанный на REST, который может быть вызван такими модулями, как регистрация пользователей, для запуска уведомлений. Когда вызывается API-адрес ReST, эта служба будет загружать соответствующий шаблон, заполнять необходимые значения и вызывать службу уведомлений для отправки электронной почты. В случае, если вызов апи не удается, детали уведомлений направляются наземной задачи в задней, который будет повторять действия за определенное число раз, прежде чем давать и поднимая ошибку

  2. Фоновая задача, которая будет, который будет повторять действие для фиксированного количества времени для отправки уведомления, прежде чем давать и поднимая ошибку

Наш первоначальный план был использовать очередь для обмена данными между двумя частями. Поток будет как этот

Client ->ReST API -> Загрузка шаблона и заполнить значения -> Вызов Notification Service -> Добавить сообщение в очередь (в случае уведомления не работают) -> назад земля задача вытягивает сообщение очереди -> действие повторных попыток -> Отметить уведомление как потерпевшее неудачу в случае неудачных попыток (которые будут приняты вручную

Вместо использования очереди другой подход заключается в использовании постоянных AKKA .NET для этого, так как AKKA.NET поддерживает почтовый ящик, но не нашел каких-либо аналогичных вариантов использования ... Мы на правильном пути, если мы выберем akka.net ... Пожалуйста, отправьте ur комментариев

ответ

0

Я думаю, что для этой очереди нужна соответствующая абстракция - опубликуйте некоторые сообщения в очереди и попросите их использовать службу уведомлений. Если служба (ы) уведомления отключена, они остаются в очереди до тех пор, пока она не вернется. Что-то вроде Kafka может быть хорошо подходит для этого, но вы, вероятно, можете реализовать что-то в любой базе данных, которую вы сейчас используете. Я, вероятно, не пошел бы по маршруту Актера, если у вас не было более сложной логики вокруг вещей.