Java EWS API - чтение электронной почты из Exchange - сопоставимые параметры

Я использую Java EWS API для подключения моего приложения к MS Exchange и чтения запросов электронной почты пользователей. Затем эти запросы обрабатываются в рамках рабочего процесса системы. Количество писем в день ограничено до 50, поэтому общий объем меньше. Однако я ищу эффективный и надежный механизм чтения с сервера обмена с помощью EWS API. Также обратите внимание, что как только электронное письмо обработано, мы перемещаем его во вложенные папки, чтобы в папке «Входящие» были только необработанные запросы.

Насколько я понимаю, в настоящее время используются следующие схемы для подключения к серверу Exchange и выполнения различных операций с почтовым ящиком.

  1. Опрос - подключение к Exchange с помощью стандартного интерфейса службы Exchange; найти все новые электронные письма и обработать их по порядку. Клиент лучше контролирует сбои и синхронизацию между чтением и перемещением в обработанные папки. С другой стороны, взаимодействие происходит не в реальном времени, и для обмена устанавливаются связи, даже если нет никакой активности.

  2. Уведомления по запросу - этот метод почти идентичен предыдущему, подпишитесь на уведомления по запросу с использованием интервала и читайте электронные письма из папки «Входящие» всякий раз, когда происходит событие таймера. Плюсы и минусы аналогичны подходу 1.

  3. Push-уведомления - здесь клиенты подписываются на сервер обмена для получения push-уведомлений, регистрируясь на определенные события и определяя механизм обратного вызова (клиентская веб-служба) для получения уведомлений. С другой стороны, уведомления работают почти в реальном времени, а соединения устанавливаются только при наличии событий. С другой стороны, я вижу, что подписками и водяными знаками нужно управлять на стороне клиента, чтобы события не пропадали. Не уверен, что это все еще надежный подход, как то, что происходит с сообщениями, которые уже находятся в папке «Входящие» до установления подписки; будут ли эти события воспроизведены при запуске сервера? Не ясно.

  4. Подписка на потоковую передачу - клиенты устанавливают соединение для потоковой передачи, а затем поддерживают его с сервером не более 30 минут, и в течение этого времени Exchange будет уведомлять о любых зарегистрированных событиях. После разрыва соединения его можно восстановить, чтобы подписка оставалась активной. Это казалось лучшим подходом, пока я не услышал, что дополнительные шаги для синхронизации элементов папки и поддержания состояния синхронизации; требуется через регулярные промежутки времени, чтобы не пропустить события при подключении / отключении.

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

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


person Anand Nadar    schedule 13.02.2013    source источник


Ответы (1)


Я бы выбрал простоту кода варианта 1. Если вы подключаетесь раз в минуту, нагрузка очень мала (просто вызов FindItem ничего не возвращает), и пользователи воспринимают это как почти мгновенное.

Вы обрабатываете не более 50 в день, поэтому желание быть «мгновенным» немного противоречиво (если пользователь делает только такое количество обновлений, он наверняка может подождать минуту).

person Jan Doggen    schedule 14.02.2013
comment
Я согласен с вами, Январь. В реальном времени бизнес-пользователи должны были увидеть, как рабочий процесс запускается вскоре после отправки электронного письма, и затем иметь возможность отслеживать прогресс на панели инструментов. Но я думаю, имеет смысл успокоиться на небольшую задержку, чтобы обрести надежность. - person Anand Nadar; 14.02.2013