Часть приложения, над которым я работаю, - это SWF, который показывает тест с 80 вопросами. Каждый вопрос сохраняется в SQL Server через WebORB и ASP.NET.
Если кандидат заканчивает тестирование, сессия должна быть подтверждена. Проблема в том, что иногда 350 кандидатов заканчивают тестирование в одно и то же время, и процессор на веб-сервере и SQL Server взрываются (350 проверок одновременно).
Теперь, как мне организовать очередь здесь? В базе данных есть таблица, в которой есть запись для каждого сеанса. Один столбец содержит статус. 1 закончен, 2 подтвержден.
Я мог бы реализовать организацию очереди двумя способами (на мой взгляд, возможно, у вас есть другие предложения):
- Процесс, который проверяет таблицу на наличие записей со статусом 1. Если он находит ее, он проверяет сеанс. Итак, сеансы проверяются один за другим.
- Если кандидат заканчивает свою сессию, сообщение отправляется в очередь MSMQ. Другой процесс прослушивает очередь и проверяет сеансы один за другим.
Сейчас:
- Какой будет лучший подход?
- С чего начать процесс проверки сеансов? В вашем global.asax (application_start)? Как служба Windows? Как exe в корне сайта, который запускается в application_start?
Мне кажется, проще всего использовать таблицу и искать записи со статусом 1.