Внедрить систему последовательности (потоки триггеров), которая будет отправлять уведомления на основе определенных условий (C #, Asp.net) - PullRequest
0 голосов
/ 26 ноября 2018

Мы хотели бы создать триггерную систему (триггерный поток), которая будет срабатывать на основе некоторой логики для наших клиентов / арендаторов, работающих под управлением системы (приложение, бот, веб-сайт).Например, если пользователь посетил определенный поток ботов и не нажал ни на что, система должна вызвать последующее уведомление после 15 минут бездействия.

Вещи, которые меняются:

  • Время ожидания выполнения условия настраивается для каждого потока запуска (15 минут, 50 минут, 10 минут).
  • Для каждого арендатора будет настроено более одного потока запуска.
  • Новые пользователи назначаются каждый день, и поэтому система должна иметь возможность масштабирования для проверки всех (10 новых пользователей в день)

Мы используем c # и Asp.netМы размещали наши проекты в облаке и думали о том, чтобы иметь функцию Azure, которая будет срабатывать каждую минуту и ​​проверять каждый триггер, выполняя запросы к базе данных (вычисляя время с момента последнего действия и выполняя некоторую динамическую логику) и отправляя уведомление, еслиусловия совпадают.

Но мы не думаем, что эта архитектура будет масштабироваться так, как если бы у нас было 50 триггеров и 400 000 пользователей, тогда мы будем запрашивать базу данных 50 раз в минуту, чтобы выполнить проверки для всех пользователей, и мы думаем, что это излишнеБаза данных

Любые другие идеи.

1 Ответ

0 голосов
/ 26 ноября 2018

Это закончится довольно грязно, если вы сделаете это на стороне сервера.Вы пытаетесь создать общее решение здесь, когда у вас действительно нет такого большого количества различных типов событий, и конкретное решение на стороне клиента довольно простое.

Отправьте свой «тайм-аут» клиенту ив javascript сбрасывайте переменную времени при каждом щелчке / нажатии клавиши / и т. д., по тайм-ауту, когда истекает тайм-аут, сравнивайте с момента последнего действия и, если время истекло, отправьте событие.

Это действительножесткая сторона сервера.Вы должны делать такие вещи, как различие между пользователем, закрывающим свой браузер / приложение, и пользователем, сидящим без дела ... это уродливо и очень дорого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...