【问题标题】:Java EWS API - Read email from exchange - Comparable optionsJava EWS API - 从交换中读取电子邮件 - 可比选项
【发布时间】:2013-02-13 16:35:23
【问题描述】:

我正在使用 Java EWS API 将我的应用程序连接到 MS Exchange 并读取用户电子邮件请求。然后通过系统工作流程处理这些请求。一天内的电子邮件数量限制为 50 封,因此整体数量较少。但是,我正在寻找一种有效且可靠的机制来使用 EWS API 从交换服务器中读取数据。另请注意,处理完电子邮件后,我们会将其移至子文件夹,因此收件箱中只有未处理的请求

目前据我了解,以下方案用于连接Exchange服务器并对邮箱执行各种操作。

  1. 轮询 - 使用标准 Exchange 服务接口连接到 Exchange;查找所有新电子邮件并按顺序处理它们。客户端可以更好地控制读取和移动到已处理文件夹之间的故障和同步。不利的一面是,体验不是实时的,即使没有任何活动,也会建立连接以进行交换。

  2. Pull Notifications - 此方法与前一种方法几乎相同,使用间隔订阅拉取通知,并在计时器事件发生时从收件箱中读取电子邮件。利弊与方法一类似。

  3. 推送通知 - 客户端订阅交换服务器以通过将自己注册到特定事件并定义回调机制(客户端 Web 服务)来接收通知来接收推送通知。从好的方面来说,通知几乎是实时的,并且只有在有事件时才会建立连接。不利的一面是,我发现订阅和水印需要在客户端进行管理,以免事件丢失。不确定这是否仍然是一种可靠的方法,因为在建立订阅之前已经在收件箱中的消息会发生什么情况;服务器启动时会重播这些事件吗?不清楚。

  4. 流式订阅 - 客户端建立流式连接,然后将其与服务器保持打开状态最多 30 分钟,在此期间交换将通知任何已注册的事件。一旦连接断开,就有能力恢复它,以便订阅保持活动状态。在我开始听到同步文件夹项目和保持同步状态的额外步骤之前,这似乎是最好的方法;需要定期进行,以免因连接/断开而错过事件。

查看我的需求(可靠地从 Exchange 服务器读取电子邮件)并分析各种选项,我觉得方法 1 简单且更可靠,因为它可以更好地控制整个过程。但同时如果我对框架在优缺点方面的理解是错误的,我想和其他熟悉 API 的人一起来纠正我。

我愿意接受小组的任何建议,以便更好地做到这一点,因为我们的目的是不错过任何电子邮件。

【问题讨论】:

    标签: java exchangewebservices ewsjavaapi


    【解决方案1】:

    我会选择选项 1 的代码简单性。如果您每分钟连接一次,负载非常低(只是 FindItem 调用不返回任何内容)并且用户几乎可以立即体验到它。

    您每天最多只能处理 50 个,因此“即时”的愿望有点矛盾(如果用户只进行这么多更新,他肯定可以等待一分钟)。

    【讨论】:

    • 我同意 Jan 的看法。业务用户真正需要的是在发送电子邮件后立即看到工作流启动,然后能够在仪表板中跟踪进度。但我想,为了获得可靠性,稍等片刻安顿下来是有意义的。
    猜你喜欢
    • 2011-07-10
    • 2012-02-21
    • 1970-01-01
    • 2017-04-08
    • 1970-01-01
    • 2013-12-28
    • 2019-09-13
    • 1970-01-01
    • 2018-10-13
    相关资源
    最近更新 更多