分布式定时任务之2:elasticjob踩坑

因为之前的elasjob一直都是用xml配置的,在自己的任务当中,可以注入spring的组件。

后来在一次用springboot集成elasticjpb的时候,采用了javaAPI的方式开发job,结果就是:

javaAPI方式的job中不能注入spring 的组件,获取的值都是null

	@Override
	public void afterPropertiesSet() throws Exception {
		JobEventConfiguration jobEventRdbConfig = new JobEventRdbConfiguration(act.getBean(DynamicDataSource.class));
		new JobScheduler(regCenter(), liteJobConfig(), jobEventRdbConfig).init();
	}

	private CoordinatorRegistryCenter regCenter() {
		CoordinatorRegistryCenter regCenter = new ZookeeperRegistryCenter(
				new ZookeeperConfiguration(zkHost, namespace));
		regCenter.init();
		return regCenter;
	}

	private LiteJobConfiguration liteJobConfig() {
		// 创建作业配置
		// 定义作业核心配置
		JobCoreConfiguration coreConfig = JobCoreConfiguration.newBuilder("javaFindJobTask", cron, 3)
				.shardingItemParameters("0=A,1=B,2=C").build();
		// 定义SIMPLE类型配置
		SimpleJobConfiguration jobConfig = new SimpleJobConfiguration(coreConfig,
				JavaFindJobTask.class.getCanonicalName());
		// 定义Lite作业根配置
		LiteJobConfiguration simpleJobRootConfig = LiteJobConfiguration.newBuilder(jobConfig).overwrite(false)
				.reconcileIntervalMinutes(10).build();
		return simpleJobRootConfig;
	}

可以看出, 

   // 定义SIMPLE类型配置
        SimpleJobConfiguration jobConfig = new SimpleJobConfiguration(coreConfig,
                JavaFindJobTask.class.getCanonicalName());

只注入了当前job,并没有注入其依赖的spring组件,这算是elasticjob的bug么?

如果哪位同志解决了,请留个言哈。

猜你喜欢

转载自blog.csdn.net/licwzy/article/details/83511751
今日推荐