java - 有没有办法在spring boot中用参数来调度一个函数
问题描述
我想要一个函数将数据库/模式的名称作为输入,并每 5 分钟检查一次数据库是否处于活动状态,然后将其记录在不同的表中。有点像监控数据库
我有一个功能说重复
function repeat(String database_name) {
//check database_name can be connected or not
}
当我将使用@scheduled 对其进行注释时,如何在函数重复(如果不是参数)中传递值
解决方案
对此的一种解决方案是创建一个表示参数的对象,并在 5 分钟后执行时,获取该对象并使用内部状态作为参数的表示。您必须确保 MyEventService 在每 5 分钟执行一次之前包含对 Event 的引用。如果没有对原始帖子的更多输入,就不可能知道如何/何时执行此操作。
如果参数永远不会改变,那么我建议使服务不可变,并删除事件类,并使用 @Value 通过属性提供值。
class Event {
private final String myString;
// constructor, getter
}
@Service
public class MyEventService {
private Event event;
// constructor, setter, getter
}
class MyScheduledTask {
@Autowired
private MyEventService eventService;
@Scheduled(fixedDelay = 300_000)
public void execute() {
Event event = eventService.getEvent();
if (event == null) {
throw new IllegalStateException("No event to process.");
}
// process event
}
}
推荐阅读
- c# - 如何在 WPF 中以编程方式清除所有项目的列表框?
- php - 通过 php 提供大文件,不在 public_html 中
- c# - “参数化查询需要一个未提供的参数”错误
- javascript - 使用当前 vue 组件的方法作为默认 prop 值
- ruby - 使用 will_paginate 分页没有活动记录只显示第一页的值,下一页完全为空
- python - 如何使用交互方法构建模块
- r - 有人可以协助在 R 中使用“httr”包进行 API 调用吗?
- python - 如何在 matplotlib 中将列指定为轴并绘制条形图?
- azure - 如何通过 FQDN 寻址 VNET 中的其他 VM?
- java - 如何将http响应放入Set