我需要使用Java API每28天旋转一次IAM用户密钥。我有一个有效的API,它将创建一个新密钥并删除旧密钥。但是,问题在于将其与我的当前应用程序集成,以便28天后它将运行我的方法并生成新的凭据文件。
主应用程序将一直运行。伴随着它,我将有一个方法可以创建该凭证文件,并且该方法只能在上次更新文件时间起28天后运行。
如何每28天运行一次文件创建过程?我的意思是在上次创建后28天如何计算或触发此方法?
我正在使用Quartz调度此方法的运行时间,但是我对计算部分天数并触发它感到困惑。
这是我正在使用的:
public static void main(String[] args) throws Exception {
JobDetail job = new JobDetail();
job.setName("dummyJobName");
job.setJobClass(HelloJob.class);
// configure the scheduler time
File file = new File("C:\\Users\\u6034690\\.aws\\credentials");
Date lastModifiedDate = new Date(file.lastModified());
SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss");
String strFormatedLastModifedDate = sdf.format(lastModifiedDate);
System.out.println("After Format : " + strFormatedLastModifedDate);
Calendar c = Calendar.getInstance();
c.setTime(lastModifiedDate); // Now use today date.
c.add(Calendar.DATE, 28); // Adding 28 days
String output = sdf.format(c.getTime());
System.out.println(output);
Date millisd = c.getTime();
long millis = millisd.getTime();
System.out.println(millis);
SimpleTrigger trigger = new SimpleTrigger();
trigger.setName("Test");
trigger.setStartTime(new Date(System.currentTimeMillis() + 1000));
trigger.setRepeatCount(SimpleTrigger.REPEAT_INDEFINITELY);
trigger.setRepeatInterval(30000);
// schedule it
Scheduler scheduler = new StdSchedulerFactory().getScheduler();
scheduler.start();
scheduler.scheduleJob(job, trigger);
}
问题出在以下部分:
trigger.setRepeatInterval(30000);
答案 0 :(得分:0)
以这种方式尝试。.
GregorianCalendar executionDate = new GregorianCalendar();
executionDate .set(Calendar.DAY_OF_MONTH, 28);
并以此方式安排触发器。
Trigger repeatTrigger = newTrigger()
.withIdentity("Repeat at 28")
.usingJobData(orderDataMap).startAt(executionDate .getTime()).forJob(job).build();
scheduler.scheduleJob(repeatTrigger );
您可以用自己的方式修改Calander方法,此api中有很多方法可以覆盖所需的时间范围。