Search
Write a publication
Pull to refresh

Comments 5

Добрый день. А запуск набора триггеров отвечает «Отправка рассылок идет из windows-сервиса, который периодически проверяет не появилось ли новых потребителей, подходящих под условия.»? Просто раз в N секунд запускает проход по всем триггерам?
Ну в общем да.

Если точнее, то у нас есть мини-фреймворк для обработки периодических задач в windows-сервисе. Для каждой задачи есть запись в БД, в которой кроме прочего хранится время последнего выполнения задачи. Поток планировщика каждую минуту проверяет, есть ли задачи, которые пора запустить и запускает каждую в отдельном потоке (а если точнее, то в отдельном System.Threading.Tasks.Task).

Для каждого триггера мы создаем отдельную периодическую задачу со своим периодом обработки. Минимальный период, который можно выставить в настройках триггерах, — 5 минут. Если нужно, чтобы уведомление (или, например, выдача, баллов) происходило прям сразу и 5 минут — слишком долгий срок, то триггеры мы не используем. Для таких задач у нас есть своя система event'ов, которые могут выполняться как синхронно, так и асинхронно с использованием Rabbit-очередей. Но на event'ах нельзя сделать логику вроде «послать письмо тем, кто не заходил на сайт боле 2-ух недель». Триггеры в общем более гибкие.
Спасибо, я это и хотел услышать. Аналогично делаем просто, было интересно, может кто-то что-то иное использует.
спасибо, почерпнул для себя несколько хороших идей!
Спасибо, как раз сейчас стою перед выбором — делать примерно похожий фреймворк, или же «забить все в код как есть» :)
Sign up to leave a comment.