2

我想编写一个处理传入电子邮件的服务器进程。为此,我看到两个选项 1. 轮询和 2. 使用 IMAP IDLE 功能的电子邮件推送。两者都可以使用 JavaMail 完成。我倾向于使用 IMAP IDLE 来实现整体,但我对可靠性有些担忧。由于它将作为服务器进程 7x24 运行,因此如果服务只是保持、冻结或无响应,这将是致命的。

所以最后的问题是,IMAP IDLE 特性是否可以安全地在服务器进程中实现,或者就可靠性和稳定性而言,轮询方法是更好的解决方案吗?

4

1 回答 1

2

IMAP Idle 不会 24x7 运行,通常几乎所有的邮件都为 IDLE 定义了一个超时时间,比如 30 分钟如果服务器没有这样做,那么它可能是一个很大的瓶颈,因为像 imap/ipad 之类的设备和一些其他客户端同时实例化几个实例,可能会或可能不会关闭连接,如果没有空闲超时,那么服务器将堆积如此多的未终止和无用的连接,有效地阻塞整个系统。

轮询可能是一个不错的选择,但这可能会再次减慢服务速度,因为每次都需要扫描用户的整个邮箱以查找任何邮件活动。

我建议使用 IDLE,因为它以最少的资源运行(在服务器上)并且对任何更新都有效,并且不要忘记在 30 分钟之前断开与客户端的连接(超时值,听说过不同的问题)

于 2013-03-06T10:37:31.813 回答