【问题标题】:Quartz 2.x, How to get Trigger Type?Quartz 2.x,如何获取触发器类型?
【发布时间】:2017-04-17 00:39:35
【问题描述】:

我使用的是quartz 2.x 版本。

我需要从 QRTZ_TRIGGERS 表中获取列 TRIGGER_TYPE

使用API​​,如何获取TRIGGER_TYPE

这是我的代码:

for (String group : scheduler.getTriggerGroupNames()) {
    for (TriggerKey triggerKey : scheduler.getTriggerKeys(GroupMatcher.<TriggerKey>groupEquals(group))) {
        Trigger trigger = scheduler.getTrigger(triggerKey(triggerKey.getName(), triggerKey.getGroup()));
        System.out.println(scheduler.getSchedulerName());
        System.out.println(triggerKey.getName());
        System.out.println(triggerKey.getGroup());
        System.out.println(trigger.getJobKey());
        //job name
        //job group
        System.out.println(trigger.getDescription());
        System.out.println(trigger.getNextFireTime());
        System.out.println(trigger.getPreviousFireTime());
        System.out.println(trigger.getPriority());
        System.out.println(scheduler.getTriggerState(triggerKey(triggerKey.getName(), triggerKey.getGroup())));
        //trigger type
        System.out.println(trigger.getStartTime());
        System.out.println(trigger.getEndTime());
        System.out.println(trigger.getCalendarName());
        System.out.println(trigger.getMisfireInstruction());
    }
}

【问题讨论】:

  • Quartz 文档对于访问 TRIGGER_TYPE 有什么要说的?你试过SELECT TRIGGER_TYPE FROM QRTZ_TRIGGERS之类的吗?
  • 我想使用 API 导入它而不是从 db 导入,但是我可以将其他值导入 API,但我找不到获取 TRIGGER_TYPE 的 API。你知道吗?
  • 改进的语法和格式

标签: java triggers quartz


【解决方案1】:

有 2 种触发器类型,SimpleTrigger 和 CronTrigger。

也许看看他们的 API。您可能会在那里获得有关如何区分两者的线索。

【讨论】:

    【解决方案2】:

    QRTZ_TRIGGERS中的TRIGGER_TYPE信息在运行时体现在Trigger实现的具体Java类型中:

    • CalendarIntervalTriggerImpl -> TTYPE_CAL_INT,
    • CronTriggerImpl -> TTYPE_CRON,
    • DailyTimeIntervalTriggerImpl -> TTYPE_DAILY_TIME_INT
    • SimpleTriggerImpl -> TTYPE_SIMPLE.

    自定义Trigger 类型还有一个默认触发器类型:TTYPE_BLOB

    请注意,如果您真的想在运行时访问该信息,最好使用以下代码:

    TriggerPersistenceDelegate tDel = new StdJDBCDelegate().findTriggerPersistenceDelegate(trigger);
    
    String type = TTYPE_BLOB;
    if(tDel != null)
      type = tDel.getHandledTriggerTypeDiscriminator();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多