当前位置: 首页 > 知识库问答 >
问题:

QuartzScheduler:在不同的时间段向不同的报告发送错误消息

柴嘉石
2023-03-14

我使用quartz调度程序在不同的时间段向不同的报告发送错误消息。我创建了一个每小时运行一次的调度器,它将执行第二个调度器(此处显示的代码)。必须发送消息的时间是从数据库中获取的,并在exp变量中传递。我只能获取数据库中第一行的值,还可以获取一个org。石英ObjectAlreadyExistsException:无法存储作业:“q3Job”。cronJob3',因为已经存在一个具有此标识的。”错误如何更正此错误?有谁能给我建议一个正确的方法来完成这项日程安排的任务吗?

QSchedule2类

public class QSchedule2 implements Job {

    private static Date date1 = null;
    private static Date date2 = null;

    private static String dateStart = "";
    private static String dateStop = "";

    public void execute(JobExecutionContext context) throws JobExecutionException {
        q2();
    }

    public void q2() {
        String exp = "";
        try {
            Class.forName(driverClassName);
            con = DriverManager.getConnection(url, dbUsername, dbPassword);

            dateStop = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss").format(System.currentTimeMillis());

            ps = con.prepareStatement(
                    "select report_name,frequency,emailDate from ErrorReport where sendReport='Yes'");
            rs = ps.executeQuery();

            while (rs.next()) {

                dateStart = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss").format(rs.getTimestamp(3));

                SimpleDateFormat format = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss");

                date1 = format.parse(dateStart);
                date2 = format.parse(dateStop);

                long diff = date2.getTime() - date1.getTime();

                long diffMinutes = diff / (60 * 1000) % 60;

                String frequency = rs.getString(2);
                int freq = Integer.parseInt(frequency);

                if (diffMinutes >= freq) {
                    exp = "0 0/" + freq + " * 1/1 * ? *";

                    Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();

                    JobDetail job = newJob(Q3.class).withIdentity("cronJob", "q3Job").build();

                    CronTrigger cronTrigger = newTrigger().withIdentity("trigger1", "q3Job")
                            .withSchedule(CronScheduleBuilder.cronSchedule(exp)).build();

                    scheduler.scheduleJob(job, cronTrigger);
                    scheduler.start();
                } else {
                    System.err.println("No email sent");
                }

            }

        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                rs.close();
                ps.close();
                con.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
}

共有1个答案

端木震博
2023-03-14

查看调度程序API。

作业不会神奇地删除。要检查作业是否已经已知,您可以使用check Exist()方法。当作业存在时,您可以验证触发器是否正确。如果是,请不要做任何事情。如果不是,请更新触发器。

 类似资料:
  • 问题内容: 我有一个JTextArea在我的主应用程序窗口中始终可见(如果需要,则为Log),并且我想使用它来显示系统中正在进行的活动(如您将对System.out.println( )(如果有条件或其他条件) 我指的是用户所做的高级操作(例如“成功加载文件”或“写入磁盘”,“完成”等) 这样的消息可以在我的系统中的任何地方生成,主要是在另一个包中,这些包的类处理数据和计算,并且它们不知道GUI。

  • 我一直试图通过按钮单击(mRescue)在我的数据库(Emergency_Contact)中发送自定义消息,当单击按钮时,它将检查在签入之后按下按钮的人的对于每个拥有作为他们的孩子的人,如果他们拥有作为他们的孩子,它会向他们发送消息,否则它会返回Toast消息。我试图运行我的代码,但它崩溃了,我不知道为什么。这是我的活动,执行此操作。 如何发送此消息? 这是我的logcat

  • 嗯,我一直在研究基于用户代理的子域间共享会话保护。 我非常惊讶,在IE 11预览版最近发布之前,它一直运行良好。有 2 个子域 example.com和sub.example.com 我已经拦截了对两个域的请求,似乎发送到每个域的用户代理HTTP标头是不同的。 example.com请求有: 用户代理: Mozilla/5.0 (视窗 NT 6.1;哇64;三叉戟/7.0;rv:11.0) 像壁虎

  • 我有一个关于标题中的错误信息的问题。我正努力做到以下几点: 通过 实体的侦听器应向JMS队列(HornetQ)发送消息,通知系统的其他部分插入了该实体。 使用注释的方法被完美地调用,但是在发送消息时,我得到了下面的错误消息。看起来发送消息会触发错误,但为什么呢? 另一个奇怪的行为是,如果我第二次触发相同的操作,错误不会出现,消息会被发送到队列。 我正在使用以下环境: JBoss Wildfly C

  • 我有一个表单输入字段,如果用户尝试在空时提交,则显示错误,但我也想显示不同的错误消息,即输入不是唯一的,我目前有这个 这是MUI v4

  • 我有以下配置: 一个具有 2 个分区的 kafka 主题 一个动物园管理员实例 一个 kafka 实例 具有相同组 ID 的两个使用者 Flink 作业片段: 方案 1: 我在eclipse上写了一个flink job (Producer ),它从一个文件夹中读取一个文件,并在kafka主题上放置msgs。 所以当我使用eclipse运行这段代码时,它工作得很好。 例如:如果我放置一个有100条记