代码之家  ›  专栏  ›  技术社区  ›  brabster

如何清除Quartz调度程序中的触发器

  •  3
  • brabster  · 技术社区  · 15 年前

    我考虑过迭代组和名称,在运行时调用unschedule,但是当有数千个触发器(大约2个到unschedule 10个触发器)时,这看起来非常慢。

    Deleted 100 triggers in 3594ms,35.94 triggers/ms
    Deleted 100 triggers in 2734ms,13.67 triggers/ms
    Deleted 100 triggers in 2453ms,8.176666666666666 triggers/ms
    Deleted 100 triggers in 1985ms,4.9625 triggers/ms
    Deleted 100 triggers in 1547ms,3.094 triggers/ms
    Deleted 100 triggers in 1281ms,2.135 triggers/ms
    Deleted 100 triggers in 1047ms,1.4957142857142858 triggers/ms
    Deleted 100 triggers in 765ms,0.95625 triggers/ms
    Deleted 100 triggers in 485ms,0.5388888888888889 triggers/ms
    Deleted 100 triggers in 156ms,0.156 triggers/ms
    

    我找不到任何大容量的方法来清除。

    我最终考虑了停止调度程序并将其简化为垃圾收集,但我不确定是否还有其他东西需要整理,以确保它在任何地方都没有被引用。

    有人知道这里最好的方法吗?

    2 回复  |  直到 15 年前
        1
  •  2
  •   Cjxcz Odjcayrwl    15 年前

    你将有多少个触发器和任务?

    你考虑过数据库存储吗?您完全可以利用SQL对一组数据进行操作并删除整个触发器组,或者使用单个命令删除与模式匹配的所有触发器。

        2
  •  1
  •   Tommi    15 年前

    我想你最好的办法就是用 shutdown scheduler.shutdown(true) 如果要在关闭计划程序之前完成所有当前执行的作业。根据 Quartz API ,呼叫关闭 .