【发布时间】:2021-08-14 05:04:09
【问题描述】:
12-Factor 博客建议应用程序应该“将管理/管理任务作为一次性流程运行”。
这在 Java/Spring-boot 应用程序的上下文中意味着什么?我可以举个例子吗?
【问题讨论】:
标签: java spring-boot 12factor
12-Factor 博客建议应用程序应该“将管理/管理任务作为一次性流程运行”。
这在 Java/Spring-boot 应用程序的上下文中意味着什么?我可以举个例子吗?
【问题讨论】:
标签: java spring-boot 12factor
网站不建议这样做。它说开发人员可能想要这样做,并且如果他们这样做了,他们应该应用与其他代码相同的标准:
一次性管理进程应在与应用的常规长期运行进程相同的环境中运行。它们针对某个版本运行,使用与针对该版本运行的任何进程相同的代码库和配置。管理员代码必须与应用程序代码一起提供以避免同步问题。
以我的应用程序为例:用户可以发送邀请,收件人必须在 7 天内回复,否则邀请将过期。这是通过在邀请上设置时间戳并执行等效于DELETE FROM Invitations WHERE expiration < NOW() 的数据库查询来实现的。
现在,我们可以让某人登录数据库并定期执行此查询。然而,这个“清理”操作被内置到应用程序中,位于/internal/admin/cleanInvitations 之类的 URL 中,并且该端点由外部 cron 作业执行。调度在主应用程序之外,但所有数据库配置、连接和逻辑都包含在我们的主要业务逻辑旁边。
【讨论】: