如何使用Spring作为电子邮件存储

时间:2011-06-13 05:16:53

标签: java email

请问有谁可以告诉我如何使用spring作为临时电子邮件存储?基本上我需要将电子邮件临时存储在内存中,如果它无法连接到电子邮件服务器(原因如网络错误)。然后应用程序应尝试重新连接到邮件服务器。连接它应该在内存中发送电子邮件。

2 个答案:

答案 0 :(得分:3)

Spring对这个用例并没有真正的解决方案。

有几种选择:

  1. 在localhost上设置SMTP服务器,以便将消息中继到中央实例。这将删除您的应用程序和邮件服务器之间的网络连接,因此应该有可能使它不会达到非常小的范围。
  2. 将消息存储在数据库中,这并不理想,因为存在阻止访问邮件服务器的网络问题,可能很容易出现影响数据库访问的网络问题。此外,您还必须创建某种重试过程,每x分钟重新发送一次消息
  3. 将消息发布到本地持久性JMS队列,然后使用消息驱动Bean(或弹出消息传递容器)删除消息并将其发布到邮件服务器
  4. 根据我的个人经验选项1.通常让我足够接近我需要的服务水平,但你必须评估自己的要求。

    我实际上已经看到在生产系统中使用远程JMS代理严重实现了选项3。重要的特征是JMS代理是本地的,最好是在进程中,因此网络闪存不会影响连接。

答案 1 :(得分:1)

这不是一个真正的春天问题。您要求的是一种邮件发送机制,可以在重试时对发送失败进行排队。当然,您可以创建具有此类功能的bean,并通过Spring连接它;在某些情况下,我会想象它会非常有用。