Java 有没有办法在spring boot中使用参数调度函数
我需要一个函数,以数据库/模式的名称作为输入,每隔5分钟检查一次数据库是否处于活动状态,然后将其记录到另一个表中。 有点像监视数据库 我有一个函数,比如说repeatJava 有没有办法在spring boot中使用参数调度函数,java,spring-boot,scheduled-tasks,spring-scheduled,Java,Spring Boot,Scheduled Tasks,Spring Scheduled,我需要一个函数,以数据库/模式的名称作为输入,每隔5分钟检查一次数据库是否处于活动状态,然后将其记录到另一个表中。 有点像监视数据库 我有一个函数,比如说repeat function repeat(String database_name) { //check database_name can be connected or not } 当我用@scheduled注释函数repeat时,如何在函数repeat(如果不是参数)内传递值实际上@scheduled接受参数。使用参数fi
function repeat(String database_name) {
//check database_name can be connected or not
}
当我用@scheduled注释函数repeat时,如何在函数repeat(如果不是参数)内传递值实际上
@scheduled
接受参数。使用参数fixedRate
指定以毫秒为单位的间隔:
@Scheduled(fixedRate = 300000)
public void youFunction() {
}
将每5分钟执行一次
如果需要在运行时通过方法参数指定in interval,请参见此处的我的答案:
您可以使用TaskScheduler
并通过
taskScheduler.schedule(task1, new PeriodicTrigger(5, TimeUnit.MINUTES));
其中
5
也可以是一个参数。一个解决方案是创建一个表示参数的对象,在5分钟后执行时,获取该对象并使用内部状态作为参数的表示。您必须确保MyEventService在每5分钟执行一次之前包含对事件的引用。如果没有对原始帖子的更多投入,就不可能知道你是如何/何时这样做的
如果参数从未更改,那么我建议使服务不可变,并删除事件类,只通过使用@Value的属性提供值
类事件{
私有最终字符串myString;
//构造函数,getter
}
@服务
公共类MyEventService{
私人活动;
//构造函数、setter、getter
}
类MyScheduledTask{
@自动连线
私人MyEventService事件服务;
@计划(固定时间=300_000)
public void execute(){
Event=eventService.getEvent();
如果(事件==null){
抛出新的IllegalStateException(“没有要处理的事件”);
}
//过程事件
}
}
您需要澄清“我需要传递参数”的含义。预定的功能就是这样;计划在指定时间段运行,无需任何用户交互。如果您需要为调用传递一个参数,那么它实际上不是一个计划任务。这方面的用例是什么?您希望如何提供参数?在初始解决方案中从何处获取这些参数?它们来自数据库吗?它们是用户输入吗?请澄清是的,参数来自数据库@Lino@Rupeshjuyal然后,您只需在计划的方法中自己获取这些值,我认为OP的意思是传递方法参数,从技术上讲,注释“parameters”被称为,我希望它能为您提供一个解决方案。