xuxueli / xxl-job

A distributed task scheduling framework.(分布式任务调度平台XXL-JOB)
http://www.xuxueli.com/xxl-job/
GNU General Public License v3.0
27.56k stars 10.91k forks source link

相同作业内容,不同调度时间的处理策略。 #399

Closed rocsky closed 6 years ago

rocsky commented 6 years ago

Which version of XXL-JOB do you using?

v1.9.1

Expected behavior

作业内容和调度能不能完全分开。比如:可以定义一批作业内容,在创建新的调度的时候,选择一个执行作业。在ETL的一个场景中,比如空值格式化需求,除了表名称和列名称,其他代码完全一样,表名称和列名称可以作为参数传递。但是,因为不同表数据更新的频率,到达时间不一样,所以,需要定义不同的调度。现在因为调度和作业强制绑定,只能拷贝执行代码,这样一旦需要修改程序,工作量大。举例如下: 调度1:每天0点,把用户表,用sqoop,从mysql卸数到hive用于后续分析。 调度2:每天1点,把交易表,用sqoop,从mysql卸数到hive用于后续分析。 这两个作业代码一样,只是参数不一样。现在的设计,如果需要修改代码,要修改两份,在真实环境中,可以有上百张表,会有上百份的重复代码。

如果调度和作业完全分开,新建一个调度,只需要关联一个作业就行。

xuxueli commented 6 years ago

你好,目前Bean模式,多个调度支持复用单个JobHandler的。针对你提到的两个需求,只需要开发一个JobHandler即可,配置多个任务,通过不同参数差异化底层逻辑。

GLUE模式不支持复用代码,不过GLUE模式在线开发,Copy代码代价很低。

可以参考上上述方案。