0

我正在使用EWS Java與Exchange集成應用程序。是的,這不是官方的支持,我知道。這一切都非常簡單,我有交換服務器設置流式通知。但是,我碰到了一些有點頭疼的事情。EWS和Exchange 2010流媒體通知 - 看到雙重

首先,似乎每個事件(或一批事件)都被髮送兩次。例如,如果我正在查看Calendar for Modified事件並創建新的約會或修改約會,我會得到兩個相同的通知,每個都有一個ItemEvent和一個FolderEvent。他們絕對是一個接一個接一個的獨特物體,兩個事件之間沒有差別。每個對象在與之前相關的任何相關字段中都具有相同的值。唯一的區別似乎是內存地址。

其次,我希望能夠使通知更加細緻。我想查看日曆項目何時被修改,但不會在創建日曆項目時看到。看起來我只能看整個日曆文件夾,並且修改包括新項目。有什麼辦法可以讓這個更精確嗎?

編輯:其實,我發現這似乎只發生在日曆文件夾中創建的會議,只有那些與其他與會者。兩個NotificationEventArgs,每個都有一個FolderEvent和一個ItemEvent。在進一步的檢查中,我最近發現一個ItemEvent被創建,一個被修改,這對我現在知道Exchange如何處理約會並不是非常驚訝。這個想法是爲了監視創建和修改的項目,儘管我認爲它可以被分解爲兩個流式訂閱,或者考慮到該行爲,設置爲僅被修改,因爲無論如何都會捕獲「新」約會。

在任何情況下,這都是使用週期性的SyncFolder處理的(很多問題在這個問題和最終設計之間發生了變化),最終效果很好。

回答

1

儘管我沒有在Java中使用EWS的經驗,但我試着回答你的問題,因爲概念保持不變。我的代碼引用將來自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」當你創建訂閱。如果你可以分享你的代碼片段來展示你如何訂閱,那將是一件好事。