Проверьте тысячи почтовых ящиков Gmail с ~1 сервера
Я работаю над расширением Chrome, которое взаимодействует как с пользовательским интерфейсом Gmail, так и с реализацией IMAP в Gmail.
Серверная часть моего приложения должна отслеживать все входящие электронные письма для каждого пользователя и обновлять базу данных при получении сообщения / интересующего отправителя.
Я могу настроить опрос, инициированный пользователем, при котором я сканирую все новые сообщения, когда у них загружено мое приложение, но есть недостатки, поскольку мое приложение обновляется только тогда, когда пользователь находится в браузере. Я бы хотел быть в курсе всех событий...
Я рассмотрел простой опрос сервера каждого пользователя, например:
For x = 0 to All users
Fetch ALL msg where UID > lastMessageID
if msg.sender == something i care about
UPDATE table...
<repeat>
И я также подумал об использовании IMAP IDLE, таких как:
For all users, establish imap idle call
for any user whos imap idle returned
if msg.sender == something i care about
UPDATE table...
Однако я пытаюсь понять, что будет лучше масштабироваться, так как мне нужно будет контролировать минимум 5-10 тысяч аккаунтов...
Я что-то пропустил? Есть ли более простой способ сделать это для большого количества аккаунтов?
- Обратите внимание, кроме сканирования сообщений и обновления таблицы - мне не нужно хранить ни одно из сообщений.
1 ответ
Реализация IDLE - лучший вариант, так как он также не будет загружать сервер.
В случае Polling
это ответственность client
следить за всеми изменениями. Например, если почта удалена с другого клиента (например, через веб-интерфейс или через мобильное устройство), то для мониторинга таких ситуаций вам придется сканировать все почтовые ящики каждый раз, когда вы проводите опрос.
whereas
В случае IDLE
это ответственность Server
чтобы сообщить вам обо всех изменениях, которые происходят в состоянии почтового ящика, будь то операция перемещения, чтения или удаления почты. Также масштабируемость не должна быть проблемой с командой IDLE.