0

Я работаю над интегрированным приложением Exchange с использованием EWS Java. Да, это официально не поддерживается, я знаю. Все это довольно просто, и у меня есть потоковые уведомления, настроенные с сервером обмена. Тем не менее, я ударил пару коряг, которые немного поцарапаны.Уведомления о потоковой передаче EWS и Exchange 2010 - просмотр двойных

Во-первых, кажется, что каждое событие (или пакет событий) отправляется дважды. Например, если я просматриваю календарь для измененных событий, и я создаю новую встречу или меняю назначение, я получаю два одинаковых уведомления, каждый из которых имеет ItemEvent и FolderEvent. Они определенно разные объекты, которые появляются один за другим, и между этими двумя событиями существует нулевая разница. Каждый объект имеет такое же значение в любом соответствующем поле, как и предыдущее. Единственным отличием является адрес памяти.

Во-вторых, я надеюсь сделать уведомления более мелкозернистыми. Я хочу видеть, когда элемент календаря был изменен, но не когда создается элемент календаря. Похоже, я могу наблюдать только за папкой «Календарь», а «Модифицированная» включает новые элементы. Есть ли способ сделать это более точным?

EDIT: На самом деле, я обнаружил, что это происходит только с совещаниями, созданными в папке «Календарь», и только с другими участниками. Два NotificationEventArgs, каждый из которых имеет FolderEvent и ItemEvent. При дальнейшей проверке я недавно обнаружил, что создан один ItemEvent, и один Изменен, что для меня не удивительно, зная, как Exchange имеет тенденцию обрабатывать Назначения. Идея состояла в том, чтобы наблюдать за созданными и измененными элементами, хотя, я полагаю, он мог быть разбит на две потоковые подписки или, если бы это было поведенческое поведение, было изменено только так, поскольку в любом случае они бы зафиксировали «новые» назначения.

В любом случае, это было обработано периодическим SyncFolder (многое изменилось между запросом об этом и окончательным дизайном), который хорошо сработал в конце.

ответ

1

Хотя у меня нет опыта работы над EWS на Java, я стараюсь отвечать на ваши вопросы, так как концепция остается неизменной. Мои ссылки на код будут от C#

Для первой части поведение, которое вы испытываете, является ожидаемым поведением. Когда вы подписываетесь на папку, вы получаете уведомление о любом событии, которое вы указали при создании подписки. Таким образом, если вы подписаны на папку «Календарь» для событий «Модифицировано и Создано», и вы создаете или изменяете назначение, вы получите 2 уведомления:


1 для изменений уровня папки (FolderEvent): даже если вы создаете новый элемент, папка фактически был «изменен»
1 для изменения уровня товара (ItemEvent): для созданного элемента

Эти два НЕ же. Они могут выглядеть так же, как и наследуемые от базового класса NotificationEvent, но разные типы. http://msdn.microsoft.com/en-us/library/office/microsoft.exchange.webservices.data.folderevent(v=exchg.80).aspx http://msdn.microsoft.com/en-us/library/office/microsoft.exchange.webservices.data.itemevent(v=exchg.80).aspx

Для второй части, чтобы видеть только измененные события, выберите только «EventType.Modified» при создании подписки. Было бы хорошо, если бы вы могли поделиться своим фрагментом кода, чтобы показать, как вы подписываетесь.

 Смежные вопросы

  • Нет связанных вопросов^_^