我有一个包含 2 打 spring 批处理 cron 作业的应用程序。没有休息控制器,因为它是一个分析应用程序,它每天运行并从数据库中读取数据,处理它,然后将聚合数据存储在另一个数据库中。我想使用千分尺对工作有弹簧内置指标并将它们推送到 Prometheus。由于我的应用程序不是网络服务器应用程序,所以千分尺仍然会在 HOST:8080 上发布结果吗?执行器会自动在 HOST:8080 上启动新服务器吗?还是我们需要在 8080 上运行应用程序服务器?
我的理解是执行器和应用程序服务器可以运行不同的端口,因为它们是不同的进程?即使应用程序服务器存在与否,执行器应该能够使用与应用程序服务器端口相同的端口,还是可以使用不同的端口?
因此,如果我的应用程序不是基于网络服务器的应用程序,我仍然可以在 localhost:8080/actuator/ 访问指标并发布到 Prometheus?
@Mahmoud 我认为有一些有效的用例可以选择性地公开健康端点。要考虑的第一个问题是,当我们说批处理操作运行时间很短时,该时间有多短——几分钟?我同意没有必要;但是运行几个小时的作业呢?对于某些作业,我们获得指标很重要,尤其是当此类作业受业务 SLA 约束并且操作员需要知道作业是否以每秒所需的操作进行处理时,是否具有正确的连接池大小等。
运行平台还有多种实现细节——我们可以在没有 SCDF 的情况下使用 Spring Batch,不受 Prometheus 网关控制以能够使用推送,在 Istio 将自动拉取指标的云中运行等。
对于 OPs 问题,一般来说,
can
在 Web 实例中运行 Spring Batch 作业,就我在 Web 实例中使用 Spring Batch 而言,应用程序在作业完成后确实会关闭。