Реализация уведомления в веб-приложении - PullRequest
1 голос
/ 23 сентября 2010

Мы разрабатываем и веб-приложение, которое позволяет пользователям регистрироваться на определенные события. Что приложение должно сделать, это отправить им несколько уведомлений, чтобы напомнить им, что они зарегистрированы. Там будет более 1 000 пользователей, которые могут зарегистрироваться для многих событий в очень широком диапазоне времени. Мы должны отправить уведомления, такие как 3 месяца, 1 месяц, 1 неделя и один день до мероприятия.

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

Второе: если я создал этот поток - лучше поместить его и запустить рядом с приложением или внедрить этот поток в приложение и, например, запустить его в прослушивателе контекста?

Как бы вы решили это? Может быть, есть лучшие подходы?

Ответы [ 2 ]

2 голосов
/ 23 сентября 2010

Я бы не создавал свои собственные потоки для этого, я бы использовал планировщик типа Quartz и выполнял бы ежедневные или почасовые задания (я не знаю, какая гранулярность вам нужна), который бы:

  1. найти предстоящие события за 1 день, 1 неделю, 1 месяц, 3 месяца и пользователей, которые должны получать уведомления о них.
  2. создавать уведомления и отправлять их

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

1 голос
/ 23 сентября 2010

Включая вопрос о том, как планировать уведомления после их идентификации, я бы рекомендовал зацикливаться на предстоящих событиях, а не на всех пользователях. Вполне вероятно, что у вас будет гораздо больше пользователей, чем событий (особенно если вы ограничите сканирование событиями, которые происходят ровно через 1 неделю, 1 месяц и 3 месяца в будущем).

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

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