Hi weijie, ok, we using `@ElasticJobConfiguration`, I updated the issue, we can look at it on https://github.com/apache/shardingsphere-elasticjob/pull/1954
吴伟杰 <[email protected]> 于2021年8月28日周六 下午1:37写道: > Hi sunkai, > > The annotation does the `JobConfiguration` stuff, so I prefer naming > it `@ElasticJobConfiguration`. > > ------------------ > > Sincerely, > Weijie Wu (TeslaCN) > Apache ShardingSphere > > > sk c <[email protected]> 于2021年8月18日周三 下午6:29写道: > > > > > Hello weijie, > > > > Yes, the name can redefine. like `@ElasticJob` , > > `@ElasticJobConfiguration` . > > > > I better like `@ElasticJob` , what do you think? > > > > > > ------------------ > > Sincerely, > > SunKai Cai (skai) > > > > 吴伟杰 <[email protected]> 于2021年8月18日周三 下午4:15写道: > > > > > Hi sunkai, > > > > > > The extra configuration factory looks better! > > > We may need a better naming because of one-off job. > > > > > > ------------------ > > > > > > Sincerely, > > > Weijie Wu (TeslaCN) > > > Apache ShardingSphere > > > > > > sk c <[email protected]> 于2021年8月18日周三 下午3:18写道: > > > > > > > > Hello everyone, > > > > > > > > I redesign the annotation, resolve the `extraConfigurations` > parameter > > > by > > > > abstract factory pattern. like this: > > > > > > > > ``` > > > > public class SimpleTracingConfigurationFactory implements > > > > JobExtraConfigurationFactory { > > > > > > > > public JobExtraConfiguration getJobExtraConfiguration() { > > > > BasicDataSource dataSource = new BasicDataSource(); > > > > dataSource.setDriverClassName(org.h2.Driver.class.getName()); > > > > dataSource.setUrl("jdbc:h2:mem:job_event_storage"); > > > > dataSource.setUsername("sa"); > > > > dataSource.setPassword(""); > > > > return new TracingConfiguration<>("RDB", dataSource); > > > > } > > > > } > > > > ``` > > > > ``` > > > > @ElasticScheduled( > > > > cron = "0/5 * * * * ?", > > > > jobName = "SimpleTestJobSecond", > > > > shardingTotalCount = 3, > > > > shardingItemParameters = "0=Beijing,1=Shanghai,2=Guangzhou", > > > > extraConfigurations = > {SimpleTracingConfigurationFactory.class}, > > > > ) > > > > public class SimpleTestJob implements CustomJob { > > > > > > > > @Override > > > > public void execute(final ShardingContext shardingContext) { > > > > } > > > > > > > > } > > > > ``` > > > > > > > > ``` > > > > (new ScheduleJobBootstrap(regCenter,new SimpleTestJob())).schedule(); > > > > ``` > > > > > > > > sk c <[email protected]> 于2021年8月16日周一 下午3:45写道: > > > > > > > > > Hello Weijie, > > > > > > > > > > Thanks for the guidance. > > > > > > > > > > 1. `build()` is return an instance of > > > `ScheduleAnnotationJobBootstrap`. > > > > > 2. `ScheduleAnnotationJobBootstrap.schedule()` would call the > > > > > `JobBootstarp.schedule()` one by one When the job has multiple > > > ElasticJob > > > > > anntations. > > > > > 3. yes, we can do it. like this > > > > > > > > > > ``` > > > > > ScheduleAnnotationJobBootstrap.newBuilder(regCenter, new > > > > > > > > > SimpleTestJob()).addExtraConfigurations(tracingConfig).build().schedule(); > > > > > ``` > > > > > > > > > > or > > > > > > > > > > ``` > > > > > (new ScheduleAnnotationJobBootstrap(regCenter, new > > > > > SimpleTestJob()).addExtraConfigurations(tracingConfig)).schedule(); > > > > > ``` > > > > > > > > > > > > > > > ------------------ > > > > > Sincerely, > > > > > SunKai Cai (skai) > > > > > > > > > > 吴伟杰 <[email protected]> 于2021年8月13日周五 下午5:05写道: > > > > > > > > > >> Hi sunkai, > > > > >> > > > > >> I have some questions about this API: > > > > >> 1. What's the returning of `build()`? > > > > >> 2. What if the Job has multiple ElasticJob annotations? > > > > >> 3. Could we consider move the RegCenter parameter to `newBuilder` > or > > > > >> somewhere like require-args constructor? I think the RegCenter is > a > > > > >> necessary arrangement. > > > > >> > > > > >> I think it would be helpful if you can provide a document to > describe > > > > >> the detail about your API design. > > > > >> > > > > >> ------------------ > > > > >> > > > > >> Sincerely, > > > > >> Weijie Wu (TeslaCN) > > > > >> Apache ShardingSphere > > > > >> > > > > >> sk c <[email protected]> 于2021年8月13日周五 下午4:32写道: > > > > >> > > > > > >> > Hello Weijie, > > > > >> > > > > > >> > Yes, passing an instance is batter. > > > > >> > > > > > >> > ``` > > > > >> > ScheduleAnnotationJobBootstrap.newBuilder(new > > > > >> > > > > > >> > > > > SimpleTestJob()).setRegCenter(regCenter).addExtraConfigurations(tracingConfig).build().schedule(); > > > > >> > ``` > > > > >> > > > > > >> > it looks good. > > > > >> > > > > > >> > ------------------ > > > > >> > Sincerely, > > > > >> > SunKai Cai (skai) > > > > >> > > > > > >> > 吴伟杰 <[email protected]> 于2021年8月13日周五 下午3:18写道: > > > > >> > > > > > >> > > Hi sunkai > > > > >> > > > > > > >> > > ``` > > > > >> > > > > > > >> > > > > > > >> > > > > ScheduleAnnotationJobBootstrap.newBuilder(SimpleTestJob.class).setRegCenter(regCenter).addExtraConfigurations(tracingConfig).build().schedule(); > > > > >> > > ``` > > > > >> > > The API require a class means it force developer to provide a > > > no-args > > > > >> > > constructor. How about passing an instance? > > > > >> > > > > > > >> > > > > > > >> > > ------------------ > > > > >> > > > > > > >> > > Sincerely, > > > > >> > > Weijie Wu (TeslaCN) > > > > >> > > Apache ShardingSphere > > > > >> > > > > > > >> > > sk c <[email protected]> 于2021年8月12日周四 下午12:37写道: > > > > >> > > > > > > > >> > > > Hello Weijie, > > > > >> > > > > > > > >> > > > Annotation to use it without Spring, maybe we can do that: > > > > >> > > > > > > > >> > > > ``` > > > > >> > > > @ElasticScheduled( > > > > >> > > > cron = "0/5 * * * * ?", > > > > >> > > > jobName = "SimpleTestJob", > > > > >> > > > shardingTotalCount = 3, > > > > >> > > > shardingItemParameters = > > > "0=Beijing,1=Shanghai,2=Guangzhou", > > > > >> > > > props = { > > > > >> > > > @ElasticJobProp(key = "print.title", value = > > > "test > > > > >> > > title"), > > > > >> > > > @ElasticJobProp(key = "print.content", > value = > > > "test > > > > >> > > > content") > > > > >> > > > } > > > > >> > > > ) > > > > >> > > > public class SimpleTestJob implements CustomJob { > > > > >> > > > > > > > >> > > > @Override > > > > >> > > > public void execute(final ShardingContext > shardingContext) { > > > > >> > > > } > > > > >> > > > > > > > >> > > > } > > > > >> > > > ``` > > > > >> > > > > > > > >> > > > ``` > > > > >> > > > > > > > >> > > > public final class JavaMain { > > > > >> > > > ..... > > > > >> > > > public static void main(final String[] args) throws > > > IOException > > > > >> { > > > > >> > > > CoordinatorRegistryCenter regCenter = > > > setUpRegistryCenter(); > > > > >> > > > TracingConfiguration<DataSource> tracingConfig = new > > > > >> > > > TracingConfiguration<>("RDB", setUpEventTraceDataSource()); > > > > >> > > > > > > > >> > > > > > > > >> > > > > > > >> > > > > ScheduleAnnotationJobBootstrap.newBuilder(SimpleTestJob.class).setRegCenter(regCenter).addExtraConfigurations(tracingConfig).build().schedule(); > > > > >> > > > } > > > > >> > > > ..... > > > > >> > > > } > > > > >> > > > > > > > >> > > > ``` > > > > >> > > > > > > > >> > > > > > > > >> > > > ------------------ > > > > >> > > > Sincerely, > > > > >> > > > SunKai Cai (skai) > > > > >> > > > > > > > >> > > > 吴伟杰 <[email protected]> 于2021年8月12日周四 上午11:07写道: > > > > >> > > > > > > > >> > > > > Hi sunkai, > > > > >> > > > > > > > > >> > > > > If we define the annotations in API module, we also need > to > > > > >> define how > > > > >> > > > > to use it without Spring. > > > > >> > > > > > > > > >> > > > > ------------------ > > > > >> > > > > > > > > >> > > > > Sincerely, > > > > >> > > > > Weijie Wu (TeslaCN) > > > > >> > > > > Apache ShardingSphere > > > > >> > > > > > > > > >> > > > > sk c <[email protected]> 于2021年8月11日周三 下午7:53写道: > > > > >> > > > > > > > > > >> > > > > > Hello Weijie, > > > > >> > > > > > > > > > >> > > > > > Thank you, good ideas. Maybe we can do that: > > > > >> > > > > > > > > > >> > > > > > > > > > >> > > > > > 1. Move the `@ElasticScheduled` annotation to > > > > >> `api/annotation`. We > > > > >> > > can > > > > >> > > > > > have the same annotation , and different annotation > > > processor > > > > >> without > > > > >> > > > > > Spring. > > > > >> > > > > > > > > > >> > > > > > 2. Yes, this is important. I have a idea like that: > > > > >> > > > > > > > > > >> > > > > > Set Scheduled > > > > >> > > > > > ``` > > > > >> > > > > > package > > > > >> > > > > > > > > > >> > > > > > > > > >> > > > > > > >> > > > > org.apache.shardingsphere.elasticjob.lite.spring.core.annotation.job.impl; > > > > >> > > > > > @ElasticScheduled( > > > > >> > > > > > cron = "0/5 * * * * ?", > > > > >> > > > > > jobName = SimpleTestJobFirst > > > > >> > > > > > shardingTotalCount = 3, > > > > >> > > > > > shardingItemParameters = > > > > >> "0=Beijing,1=Shanghai,2=Guangzhou", > > > > >> > > > > > extraConfigurations = > {"SimpleTracingConfiguration"} > > > > >> > > > > > ) > > > > >> > > > > > public class SimpleTestJob implements CustomJob { > > > > >> > > > > > > > > > >> > > > > > @Override > > > > >> > > > > > public void execute(final ShardingContext > > > shardingContext) { > > > > >> > > > > > } > > > > >> > > > > > > > > > >> > > > > > } > > > > >> > > > > > ``` > > > > >> > > > > > > > > > >> > > > > > Set Configurable > > > > >> > > > > > > > > > >> > > > > > ``` > > > > >> > > > > > //spring example > > > > >> > > > > > @Configurable > > > > >> > > > > > @EnableElastic(scanBasePackages = > > > > >> > > > > > > > > > >> > > > > > > > > >> > > > > > > >> > > > > "org.apache.shardingsphere.elasticjob.lite.spring.core.annotation.job.impl") > > > > >> > > > > > public class ElasticConfig { > > > > >> > > > > > > > > > >> > > > > > @Bean > > > > >> > > > > > public DataSource dataSource() { > > > > >> > > > > > BasicDataSource dataSource = new > BasicDataSource(); > > > > >> > > > > > dataSource.setDriverClassName("org.h2.Driver"); > > > > >> > > > > > > dataSource.setUrl("jdbc:h2:mem:job_event_storage"); > > > > >> > > > > > dataSource.setUsername("sa"); > > > > >> > > > > > dataSource.setPassword(""); > > > > >> > > > > > } > > > > >> > > > > > > > > > >> > > > > > @Bean("SimpleTracingConfiguration") > > > > >> > > > > > public TracingConfiguration<DataSource> > > > > >> myTracingConfiguration() > > > > >> > > { > > > > >> > > > > > return new TracingConfiguration<>("RDB", > > > dataSource()); > > > > >> > > > > > } > > > > >> > > > > > } > > > > >> > > > > > ``` > > > > >> > > > > > or > > > > >> > > > > > > > > > >> > > > > > ``` > > > > >> > > > > > //spring boot example > > > > >> > > > > > @Configurable > > > > >> > > > > > @EnableElastic(scanBasePackages = > > > > >> > > > > > > > > > >> > > > > > > > > >> > > > > > > >> > > > > "org.apache.shardingsphere.elasticjob.lite.spring.core.annotation.job.impl") > > > > >> > > > > > public class ElasticConfig { > > > > >> > > > > > > > > > >> > > > > > @ConditionalOnBean(DataSource.class) > > > > >> > > > > > @Bean("SimpleTracingConfiguration") > > > > >> > > > > > public TracingConfiguration<DataSource> > > > > >> > > myTracingConfiguration(final > > > > >> > > > > > DataSource dataSource) { > > > > >> > > > > > return new TracingConfiguration<>("RDB", > > > dataSource); > > > > >> > > > > > } > > > > >> > > > > > } > > > > >> > > > > > ``` > > > > >> > > > > > > > > > >> > > > > > 3. Of course > > > > >> > > > > > > > > > >> > > > > > ------------------ > > > > >> > > > > > Sincerely, > > > > >> > > > > > SunKai Cai (skai) > > > > >> > > > > > > > > > >> > > > > > 吴伟杰 <[email protected]> 于2021年8月11日周三 下午6:38写道: > > > > >> > > > > > > > > > >> > > > > > > Hi Sunkai, > > > > >> > > > > > > > > > > >> > > > > > > I have some ideas about your proposal: > > > > >> > > > > > > 1. Could we consider using the annotation without > Spring? > > > > >> > > > > > > 2. Could we configure the jobs by annotations only? > How to > > > > >> > > configure > > > > >> > > > > > > the JobExtraConfiguration like TracingConfiguration by > > > > >> annotations? > > > > >> > > > > > > 3. Support using YAML to configure jobs without > Spring. > > > This > > > > >> can > > > > >> > > refer > > > > >> > > > > > > to how ShardingSphere does. > > > > >> > > > > > > > > > > >> > > > > > > ------------------ > > > > >> > > > > > > > > > > >> > > > > > > Sincerely, > > > > >> > > > > > > Weijie Wu (TeslaCN) > > > > >> > > > > > > Apache ShardingSphere > > > > >> > > > > > > > > > > >> > > > > > > sk c <[email protected]> 于2021年8月10日周二 下午3:43写道: > > > > >> > > > > > > > > > > > >> > > > > > > > Hi everyone, > > > > >> > > > > > > > > > > > >> > > > > > > > I prefer to discuss the annotation of ElasticJob > plan. > > > > >> > > > > > > > > > > > >> > > > > > > > example: > > > > >> > > > > > > > > > > > >> > > > > > > > ``` > > > > >> > > > > > > > @ElasticScheduled( > > > > >> > > > > > > > cron = "0/5 * * * * ?", > > > > >> > > > > > > > jobName = "SimpleTestJobSecond", > > > > >> > > > > > > > shardingTotalCount = 3, > > > > >> > > > > > > > shardingItemParameters = > > > > >> > > "0=Beijing,1=Shanghai,2=Guangzhou", > > > > >> > > > > > > > jobListenerTypes = {"NOOP", "LOG"}, > > > > >> > > > > > > > props = { > > > > >> > > > > > > > @ElasticJobProp(key = "print.title", > > > value = > > > > >> > > "test > > > > >> > > > > > > title"), > > > > >> > > > > > > > @ElasticJobProp(key = > "print.content", > > > > >> value = > > > > >> > > "test > > > > >> > > > > > > > content") > > > > >> > > > > > > > } > > > > >> > > > > > > > ) > > > > >> > > > > > > > public class SimpleTestJob implements CustomJob { > > > > >> > > > > > > > > > > > >> > > > > > > > @Override > > > > >> > > > > > > > public void execute(final ShardingContext > > > > >> shardingContext) { > > > > >> > > > > > > > } > > > > >> > > > > > > > > > > > >> > > > > > > > } > > > > >> > > > > > > > ``` > > > > >> > > > > > > > > > > > >> > > > > > > > ``` > > > > >> > > > > > > > @Configuration > > > > >> > > > > > > > @EnableElastic(scanBasePackages = > > > > >> > > > > > > > > > > > >> "org.apache.shardingsphere.elasticjob.lite.example.job.simple") > > > > >> > > > > > > > public class ElasticConfig { > > > > >> > > > > > > > > > > > >> > > > > > > > } > > > > >> > > > > > > > ``` > > > > >> > > > > > > > > > > > >> > > > > > > > we can look at it on > > > > >> > > > > > > > > > > > >> https://github.com/apache/shardingsphere-elasticjob/pull/1954 > > > > >> > > > > > > > > > > > >> > > > > > > > I am going to work it soon. Please remind me if you > > > have a > > > > >> > > > > suggestion. > > > > >> > > > > > > > > > > > >> > > > > > > > > > > > >> > > > > > > > ------------------ > > > > >> > > > > > > > Sincerely, > > > > >> > > > > > > > SunKai Cai (skai) > > > > >> > > > > > > > > > > >> > > > > > > > > >> > > > > > > >> > > > > > > > > >
