我想编写一个处理传入电子邮件的服务器进程。为此,我看到两个选项1.轮询和2.使用IMAP IDLE功能进行电子邮件推送。两者都可以使用JavaMail完成。我倾向于使用IMAP IDLE来实现整体,但我对可靠性有一些担忧。因为它将作为服务器进程7x24运行,如果服务只是保持,冻结或变得无响应将是致命的。
最后问题是,IMAP IDLE功能是否可以安全地在服务器进程中实现,或者在可靠性和稳定性方面,轮询方法是更好的解决方案吗?
答案 0 :(得分:1)
IMAP Idle不会全天候运行,通常几乎所有的邮件程序都有为IDLE定义的超时,例如30分钟如果服务器没有这样做那么它可能是一个很大的瓶颈,因为像imap /这样的设备ipad和其他一些客户端同时实例化几个实例,并且可能会或可能不会关闭连接,如果没有IDLE超时,那么服务器将堆积太多未终止且无用的连接,从而有效地阻塞整个系统。
轮询可能是一个不错的选择,但这可能会再次降低服务速度,因为每次需要扫描整个用户邮箱以进行任何邮件活动。
我建议使用IDLE,因为它以最少的资源(在服务器上)运行,并且对任何更新都有效,并且不要忘记在30分钟之前断开与客户端的连接(超时值,听说过不同的问题)