Я внедряю динамическую систему уведомлений (а-ля Facebook) для моего сайта с помощью API Servlet 3.0. Моя запланированная структура для поддержки этой функциональности:
- При каждой загрузке страницы отправляйте XMLHTTP «get»
запрос к серверу
- Разрешить серверу создавать объекты AsyncContext
из этих запросов "получить" и хранить
их в карте приложения
по идентификатору сайта пользователя
- Всякий раз, когда пользователь участвует в действии
что порождает уведомление, запросить
карта области применения для идентификаторов
друзей пользователя, и используя
AsyncContext объекты хранятся там, отправьте
уведомление каждому другу.
- Каждый из друзей получает
извещение.
Мой вопрос: необходимо ли сделать эту карту безопасной для потоков? В худшем случае функция, действующая от имени «отправляющего уведомления пользователя», отправит уведомление в устаревший асинхронный контекст на карте, либо потому, что пользователь соответствует ему, в данный момент переключает страницы и еще не отправить новый запрос XMLHTTP или вышел из системы.
Однако при каждой загрузке страницы у меня также есть код для извлечения всех уведомлений в базе данных новее, чем «дата последней проверки», поэтому при загрузке страницы уведомление пользователя не зависит от системы динамических уведомлений. Таким образом, пользователь все равно получит уведомление, если он переключает страницы (и, очевидно, концепция уведомлений не актуальна, если пользователь вышел из системы).
Учитывая эту информацию, существуют ли сценарии, которые требуют, чтобы карта была поточно-ориентированной?