【问题标题】:Resume PullSubscription later for EWS稍后为 EWS 恢复 PullSubscription
【发布时间】:2014-07-12 21:38:08
【问题描述】:

我见过的所有代码示例都是这样的

  • 订阅拉订阅
  • 取回订阅ID、水印

  • 现在循环通过 getEvents() 直到完成,更新水印

  • 可能退订。

简而言之,他们假设您正在拉一个线程/进程,并且 不需要再次使用相同的水印/订阅 ID 再次拉取。 API 本身没有“resumePullScription(subscriptionID,watermark)。它只是 已开始订阅(文件夹、事件、水印)。我不清楚我是否可以 稍后再次使用该水印与另一个 beginSubscribe,因为 subscriptionID 无法提供。

  • 我想在T0时间订阅并获取水印
  • 在另一个时间 T1,在超时间隔内我想再次获取事件。这是一个单独的线程,所以我需要重新连接到现有的订阅/水印。

T1时间好像有两种选择

  • 在时间T0取消订阅,然后在时间T1重新订阅水印,但水印不会因为取消订阅而丢失?
  • 仅通过水印重新订阅,但是 ews 是否足够聪明以连接到相同的订阅?还是会忽略水印?还是订阅预算会增长..?

无论如何,订阅到期后会发生什么实际上并不是很清楚。我认为水印会消失,但我看到声称水印会存活 30 天的信息。那么,订阅 id 的意义何在?

【问题讨论】:

  • 不确定为什么会被否决;) 这是一个实际问题 IMO - PullSubscription 的所有示例似乎或多或少都假设您只需在一个线程中进行所有轮询,然后永远不需要在另一个进程中再次使用相同的水印/订阅 ID 组合。

标签: java c# exchange-server exchangewebservices


【解决方案1】:

EWS Managed API 中的 PullSubscription 类没有允许您自行实例化它的构造函数(我猜这是他们设计中的一个边界案例)。因此,如果您想这样做,您需要使用一些 ProxyCode,例如 http://msdn.microsoft.com/en-us/library/office/exchangewebservices.geteventstype(v=exchg.150).aspx,或者使用 raw soap 和 httpclass 来发出 GetEvents 请求并解析结果。

基本上,当订阅有效时(例如在超时期限内),您应该能够使用带有 SubscriptionId 和有效水印的 GetEvents(水印应该在 30 天内有效。如果您取消订阅了该事件,水印将不会' 无效,因为它会从事件表中删除。

干杯 格伦

【讨论】:

  • 谢谢格伦。很惊讶这是一个边境案件,但情况并非总是如此;)
猜你喜欢
  • 1970-01-01
  • 2019-04-19
  • 2018-02-05
  • 1970-01-01
  • 2016-02-28
  • 1970-01-01
  • 2021-08-03
  • 2010-12-05
  • 2018-06-10
相关资源
最近更新 更多