java - Java 12 因素的管理流程
问题描述
12-Factor 博客建议应用程序应该“将管理/管理任务作为一次性流程运行”。
这在 Java/Spring-boot 应用程序的上下文中意味着什么?我能举个例子吗。
解决方案
该网站不建议这样做。它说开发人员可能想要这样做,如果他们这样做,他们应该应用与其他代码相同的标准:
一次性管理进程应在与应用程序的常规长期运行进程相同的环境中运行。它们针对某个版本运行,使用与针对该版本运行的任何进程相同的代码库和配置。管理代码必须与应用程序代码一起提供以避免同步问题。
以我的应用程序为例:用户可以发送邀请,收件人必须在 7 天内回复,否则邀请将过期。这是通过在邀请上设置时间戳并执行等效于 的数据库查询来实现的DELETE FROM Invitations WHERE expiration < NOW()
。
现在,我们可以让某人登录数据库并定期执行此查询。然而,这个“清理”操作被内置到应用程序中的 URL/internal/admin/cleanInvitations
中,并且该端点由外部 cron 作业执行。调度在主应用程序之外,但所有数据库配置、连接和逻辑都包含在我们的主要业务逻辑旁边。
推荐阅读
- telerik - RadFileExplorer 如果文件夹已存在,则自定义警报弹出窗口
- gulp - gulp 中的任务是按顺序运行的吗?
- javascript - 使用未定义的 originalUrl 双重获取到 nodejs 服务器
- c++ - 二叉树的布尔搜索方法
- javafx - 是否可以使用 Groovy 的 JDK11 模块?(即使我必须使用 Groovy 3 alpha)
- ssis - 验证 SSIS 包
- mysql - Sequelize更新并扣除不同id的多行
- google-sheets - 需要帮助根据不同条件将数据从一张表引用到另一张表
- go - SDL2 音频无法正确播放
- relational-database - 将关系分解为 BCNF 形式