Я работаю над интегрированным приложением Exchange с использованием EWS Java. Да, это официально не поддерживается, я знаю. Все это довольно просто, и у меня есть потоковые уведомления, настроенные с сервером обмена. Тем не менее, я ударил пару коряг, которые немного поцарапаны.Уведомления о потоковой передаче EWS и Exchange 2010 - просмотр двойных
Во-первых, кажется, что каждое событие (или пакет событий) отправляется дважды. Например, если я просматриваю календарь для измененных событий, и я создаю новую встречу или меняю назначение, я получаю два одинаковых уведомления, каждый из которых имеет ItemEvent и FolderEvent. Они определенно разные объекты, которые появляются один за другим, и между этими двумя событиями существует нулевая разница. Каждый объект имеет такое же значение в любом соответствующем поле, как и предыдущее. Единственным отличием является адрес памяти.
Во-вторых, я надеюсь сделать уведомления более мелкозернистыми. Я хочу видеть, когда элемент календаря был изменен, но не когда создается элемент календаря. Похоже, я могу наблюдать только за папкой «Календарь», а «Модифицированная» включает новые элементы. Есть ли способ сделать это более точным?
EDIT: На самом деле, я обнаружил, что это происходит только с совещаниями, созданными в папке «Календарь», и только с другими участниками. Два NotificationEventArgs, каждый из которых имеет FolderEvent и ItemEvent. При дальнейшей проверке я недавно обнаружил, что создан один ItemEvent, и один Изменен, что для меня не удивительно, зная, как Exchange имеет тенденцию обрабатывать Назначения. Идея состояла в том, чтобы наблюдать за созданными и измененными элементами, хотя, я полагаю, он мог быть разбит на две потоковые подписки или, если бы это было поведенческое поведение, было изменено только так, поскольку в любом случае они бы зафиксировали «новые» назначения.
В любом случае, это было обработано периодическим SyncFolder (многое изменилось между запросом об этом и окончательным дизайном), который хорошо сработал в конце.