首页 > 解决方案 > Java 12 因素的管理流程

问题描述

12-Factor 博客建议应用程序应该“将管理/管理任务作为一次性流程运行”。

这在 Java/Spring-boot 应用程序的上下文中意味着什么?我能举个例子吗。

https://12factor.net/admin-processes

标签: javaspring-boot12factor

解决方案


该网站不建议这样做。它说开发人员可能想要这样做如果他们这样做,他们应该应用与其他代码相同的标准

一次性管理进程应在与应用程序的常规长期运行进程相同的环境中运行。它们针对某个版本运行,使用与针对该版本运行的任何进程相同的代码库和配置。管理代码必须与应用程序代码一起提供以避免同步问题。

以我的应用程序为例:用户可以发送邀请,收件人必须在 7 天内回复,否则邀请将过期。这是通过在邀请上设置时间戳并执行等效于 的数据库查询来实现的DELETE FROM Invitations WHERE expiration < NOW()

现在,我们可以让某人登录数据库并定期执行此查询。然而,这个“清理”操作被内置到应用程序中的 URL/internal/admin/cleanInvitations中,并且该端点由外部 cron 作业执行。调度在主应用程序之外,但所有数据库配置、连接和逻辑都包含在我们的主要业务逻辑旁边。


推荐阅读