gpt4 book ai didi

java - Java 中的 Akka Cluster 使用 Java Mail API 进行 IMAP 获取

转载 作者:行者123 更新时间:2023-12-02 06:31:27 24 4
gpt4 key购买 nike

我想启动一些任务,该任务将连接到 IMAP 并将电子邮件数据存储在数据库中。

现在这样的工作量会很大,需要支持许多 IMAP 帐户。我想利用 Akka 集群功能,它可以在网络中的预定义机器集中运行这些作业,并在从 IMAP 主机获取数据时发生错误时进行重试。

我想创建一个 akka 集群来启动 IMAP 获取作业(通过 Actor ?? !!)。

IMAP 是一个棘手的协议(protocol),它可能无法连接到远程主机。在这种情况下,参与者应该重试几次可配置的次数来连接和获取。

最终它应该充当我的 IMAP 获取后端。

我该怎么办?

最佳答案

我们大量使用 Akka,包括使用 JavaMail/IMAP 连接并处理来自用户电子邮件帐户的新消息。容错是这个难题的重要组成部分。我们的后端的大致设置方式如下:

  1. Supervisor 节点有一个参与者,可以从数据库中选择用户进行处理
  2. IMAP 工作人员在准备好工作时通知主管(有关此“工作拉动”架构的更多信息,请参阅我的同事 Ryan Tanner 的博文:http://blog.goconspire.com/post/64901258135/akka-at-conspire-part-5-the-importance-of-pulling)
  3. Supervisor 向空闲的 IMAP 工作器发送一条 ProcessAccount 消息(一个包含 Gmail OAuth token 的自定义对象(您也可以使用传统的用户名和密码凭据))。
  4. IMAP 工作程序使用 JavaMail 来读取和处理新邮件。出现错误时,它会向主管参与者发送一条 FailedProcessing 消息(一个包含错误代码和人类可读字符串的自定义对象)。成功后,它会发送 CompletedProcessing。
  5. 主管更新数据库中的用户记录,包括在处理失败时设置错误代码。
  6. 除了定期处理正常帐户外,主管还会重试处理失败的帐户。我们的用例是每天只尝试重新处理一次,但您可以更频繁地执行此操作。

使用 Akka 集群,我们将工作人员与主管分开。将此方法与上述工作拉动机制相结合,使我们能够相对容忍不可恢复的错误,例如工作人员中出现 OutOfMemoryErrors。

关于java - Java 中的 Akka Cluster 使用 Java Mail API 进行 IMAP 获取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20022279/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com