Отправка нескольких проактивных сообщений в MS команды, используя Bot Framework, в то же время - PullRequest
0 голосов
/ 28 марта 2020

Мы отправляем уведомление всем пользователям с помощью веб-задания. но проблема не в том, что все получают уведомление одновременно. Предположим, что если мы отправим уведомление 3000 пользователям, то временной промежуток между первым и последним пользователями будет больше часа.

Есть ли лучшее решение, когда я могу отправить уведомление всем одновременно так же, как "QBot" в командах.

Спасибо.

1 Ответ

1 голос
/ 06 апреля 2020

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

Регулирование

Конечно, вы должны принять во внимание регулирование , Как сказал @ Nikitha-MSFT в комментариях, вы получите ошибки HTTP 429, как только будет достигнуто ограничение скорости. И вам нужно правильно обработать их и повторить неудачные уведомления.

Правильный уровень параллелизма

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

Например, у вас может быть два веб-задания :

WebJob A - запускается по таймеру / HTTP-запросу, находит всех пользователей, которым необходимо уведомить и создать сообщение очереди для каждого найденного пользователя

WebJob B - запускается по очереди, обрабатывает сообщение и отправляет уведомление

Каждый узел задания может обрабатывать 32 сообщения очереди как максимум асинхронно. Таким образом, теоретически вы можете отправлять 32 пакета уведомлений одновременно для каждого хоста задания.

Предполагая, что вы еще не достигли предела регулирования, вы можете начать рассматривать увеличение ресурсов:

Уменьшить

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

Увеличение

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

...