gpt4 book ai didi

java - 将每周电子邮件发送/时事通讯与 Spring 框架集成

转载 作者:行者123 更新时间:2023-12-01 23:40:55 25 4
gpt4 key购买 nike

对于我基于 Spring 的 Web 应用程序,我现在需要每周向应用程序的用户发送电子邮件。

满足这一要求的优雅解决方案是什么?

到目前为止,我已经想出了以下可能的解决方案:

  • 一个专用 cron 作业,我计划每周运行一次,独立于我的 Web 应用程序 JVM 进程并在 Web 应用程序 Servlet 容器之外运行。
    此过程负责每周发送电子邮件。为了完成发送个性化电子邮件,它重用了我已经为我的 Web 应用程序开发的域类(例如我的User 类)。这个专用进程会与正在运行的 Spring Web MVC servlet 同时访问我的应用程序的 MySQL 数据库吗?
  • 内部我的 Spring Web MVC servlet 或内部我的 Servlet 容器的调度机制。
    在此设置中,电子邮件发送发生在与我的 Web 服务 Spring Web MVC servlet 相同的 JVM 和相同的 servlet 容器中。也许此设置具有(无关?)优势,例如与托管在同一环境中的 servlet 的“数据库连接池共享”和“事务共享”“类共享”。
  • 对于上述任何设想的设置,使用或不使用Spring Batch
    我目前没有使用 Spring Batch 的经验来判断 Spring Batch 是否是一个足以满足我的要求的工具。

也许还有其他解决方案?

我对那些能够提供见解并指导做出明智决定的答案特别感兴趣。

电子邮件是通过我自己的基础设施还是通过第三方电子邮件 SaaS 服务发送与此特定问题无关。

最佳答案

根据您的描述,生成新闻通讯的代码必须与您的主应用程序共享公共(public)代码库。因此,自然的解决方案是在您的主应用程序中开发此代码。开放案例是如何触发此代码的:

  1. 来自 CRON。您从 CRON 启动一个脚本,该脚本会以某种方式触发应用程序中的函数。这可能是一个在特定端口上监听的进程,或者,对于 Web 应用程序来说,这是很自然的,是一个会触发新闻通讯的专用 URL。只需确保 URL 不能从外部运行,只能从本地主机运行(例如,检查调用者 IP)。但是,您必须处理这样的情况:当 CRON 启动脚本时您的应用程序已关闭(例如重新启动)。
  2. 来自应用程序内部。例如,使用 quartz 。缺点是您需要包含新库,为 Quartz 创建数据库表。加号 - Quartz 将处理在应用程序关闭时安排任务的情况,因为它存储有关在数据库中启动的内容的信息。

关于java - 将每周电子邮件发送/时事通讯与 Spring 框架集成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17959008/

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