{"id":1794,"date":"2023-03-27T22:36:49","date_gmt":"2023-03-27T14:36:49","guid":{"rendered":"https:\/\/www.appblog.cn\/?p=1794"},"modified":"2023-04-23T21:13:26","modified_gmt":"2023-04-23T13:13:26","slug":"spring-boot-launches-two-elasticjobs-in-the-same-application-one-of-which-is-not-started","status":"publish","type":"post","link":"https:\/\/www.appblog.cn\/index.php\/2023\/03\/27\/spring-boot-launches-two-elasticjobs-in-the-same-application-one-of-which-is-not-started\/","title":{"rendered":"Spring Boot\u540c\u4e00\u5e94\u7528\u542f\u52a8\u4e24\u4e2aElasticJob\u5176\u4e2d\u4e00\u4e2a\u672a\u542f\u52a8\u95ee\u9898"},"content":{"rendered":"<blockquote>\n<p>\u539f\u56e0\uff1a\u6ce8\u5165\u7684<code>SimpleJob<\/code>\u4e0e<code>JobScheduler<\/code>\u7684Bean\u540d\u79f0\u5fc5\u987b\u4e0d\u80fd\u76f8\u540c<\/p>\n<\/blockquote>\n<h2>\u9519\u8bef\u4ee3\u7801<\/h2>\n<p><!-- more --><\/p>\n<pre><code class=\"language-java\">@Configuration\npublic class AJobConfig {\n\n    @Resource\n    private ZookeeperRegistryCenter regCenter;\n\n    @Bean\n    public SimpleJob simpleJob() {\n\n        return new AJob();\n    }\n\n    @Bean(initMethod = &quot;init&quot;)\n    public JobScheduler jobScheduler(final SimpleJob simpleJob, @Value(&quot;${aJob.cron}&quot;) final String cron,\n                                           @Value(&quot;${aJob.shardingTotalCount}&quot;) final int shardingTotalCount,\n                                           @Value(&quot;${aJob.shardingItemParameters}&quot;) final String shardingItemParameters,\n                                           @Value(&quot;${aJob.description}&quot;) final String description) {\n\n        return new SpringJobScheduler(simpleJob, regCenter, getLiteJobConfiguration(simpleJob.getClass(),\n                cron, shardingTotalCount, shardingItemParameters, description));\n    }\n\n    private LiteJobConfiguration getLiteJobConfiguration(final Class&lt;? extends SimpleJob&gt; jobClass, final String cron, final int shardingTotalCount, final String shardingItemParameters, final String description) {\n\n        return LiteJobConfiguration.newBuilder(new SimpleJobConfiguration(JobCoreConfiguration.newBuilder(\n                jobClass.getSimpleName(), cron, shardingTotalCount).shardingItemParameters(shardingItemParameters).description(description).build(), jobClass.getCanonicalName())).overwrite(true).build();\n    }\n}<\/code><\/pre>\n<pre><code class=\"language-java\">@Configuration\npublic class BJobConfig {\n\n    @Resource\n    private ZookeeperRegistryCenter regCenter;\n\n    @Bean\n    public SimpleJob simpleJob() {\n\n        return new BJob();\n    }\n\n    @Bean(initMethod = &quot;init&quot;)\n    public JobScheduler jobScheduler(final SimpleJob simpleJob, @Value(&quot;${bJob.cron}&quot;) final String cron,\n                                           @Value(&quot;${bJob.shardingTotalCount}&quot;) final int shardingTotalCount,\n                                           @Value(&quot;${bJob.shardingItemParameters}&quot;) final String shardingItemParameters,\n                                           @Value(&quot;${bJob.description}&quot;) final String description) {\n\n        return new SpringJobScheduler(simpleJob, regCenter, getLiteJobConfiguration(simpleJob.getClass(),\n                cron, shardingTotalCount, shardingItemParameters, description));\n    }\n\n    private LiteJobConfiguration getLiteJobConfiguration(final Class&lt;? extends SimpleJob&gt; jobClass, final String cron, final int shardingTotalCount, final String shardingItemParameters, final String description) {\n\n        return LiteJobConfiguration.newBuilder(new SimpleJobConfiguration(JobCoreConfiguration.newBuilder(\n                jobClass.getSimpleName(), cron, shardingTotalCount).shardingItemParameters(shardingItemParameters).description(description).build(), jobClass.getCanonicalName())).overwrite(true).build();\n    }\n}<\/code><\/pre>\n<h2>\u6b63\u786e\u4ee3\u7801<\/h2>\n<pre><code class=\"language-java\">@Configuration\npublic class AJobConfig {\n\n    @Resource\n    private ZookeeperRegistryCenter regCenter;\n\n    @Bean\n    public SimpleJob aJob() {  \/\/SimpleJob Bean\u540d\u79f0\u5fc5\u987b\u4e0d\u4e00\u81f4\n\n        return new AJob();\n    }\n\n    @Bean(initMethod = &quot;init&quot;)  \/\/JobScheduler Bean\u540d\u79f0\u5fc5\u987b\u4e0d\u4e00\u81f4\n    public JobScheduler aJobScheduler(final SimpleJob aJob, @Value(&quot;${aJob.cron}&quot;) final String cron,\n                                           @Value(&quot;${aJob.shardingTotalCount}&quot;) final int shardingTotalCount,\n                                           @Value(&quot;${aJob.shardingItemParameters}&quot;) final String shardingItemParameters,\n                                           @Value(&quot;${aJob.description}&quot;) final String description) {\n\n        return new SpringJobScheduler(aJob, regCenter, getLiteJobConfiguration(aJob.getClass(),\n                cron, shardingTotalCount, shardingItemParameters, description));\n    }\n\n    private LiteJobConfiguration getLiteJobConfiguration(final Class&lt;? extends SimpleJob&gt; jobClass, final String cron, final int shardingTotalCount, final String shardingItemParameters, final String description) {\n\n        return LiteJobConfiguration.newBuilder(new SimpleJobConfiguration(JobCoreConfiguration.newBuilder(\n                jobClass.getSimpleName(), cron, shardingTotalCount).shardingItemParameters(shardingItemParameters).description(description).build(), jobClass.getCanonicalName())).overwrite(true).build();\n    }\n}<\/code><\/pre>\n<pre><code class=\"language-java\">@Configuration\npublic class BJobConfig {\n\n    @Resource\n    private ZookeeperRegistryCenter regCenter;\n\n    @Bean\n    public SimpleJob bJob() {  \/\/SimpleJob Bean\u540d\u79f0\u5fc5\u987b\u4e0d\u4e00\u81f4\n\n        return new BJob();\n    }\n\n    @Bean(initMethod = &quot;init&quot;)  \/\/JobScheduler Bean\u540d\u79f0\u5fc5\u987b\u4e0d\u4e00\u81f4\n    public JobScheduler bJobScheduler(final SimpleJob bJob, @Value(&quot;${bJob.cron}&quot;) final String cron,\n                                           @Value(&quot;${bJob.shardingTotalCount}&quot;) final int shardingTotalCount,\n                                           @Value(&quot;${bJob.shardingItemParameters}&quot;) final String shardingItemParameters,\n                                           @Value(&quot;${bJob.description}&quot;) final String description) {\n\n        return new SpringJobScheduler(bJob, regCenter, getLiteJobConfiguration(bJob.getClass(),\n                cron, shardingTotalCount, shardingItemParameters, description));\n    }\n\n    private LiteJobConfiguration getLiteJobConfiguration(final Class&lt;? extends SimpleJob&gt; jobClass, final String cron, final int shardingTotalCount, final String shardingItemParameters, final String description) {\n\n        return LiteJobConfiguration.newBuilder(new SimpleJobConfiguration(JobCoreConfiguration.newBuilder(\n                jobClass.getSimpleName(), cron, shardingTotalCount).shardingItemParameters(shardingItemParameters).description(description).build(), jobClass.getCanonicalName())).overwrite(true).build();\n    }\n}<\/code><\/pre>\n<h2>\u6ce8\u518c\u4e2d\u5fc3<\/h2>\n<pre><code class=\"language-java\">@Configuration\n@ConditionalOnExpression(&quot;&#039;${regCenter.serverList}&#039;.length() &gt; 0&quot;)\npublic class RegistryCenterConfig {\n\n    @Bean(initMethod = &quot;init&quot;)\n    public ZookeeperRegistryCenter regCenter(@Value(&quot;${regCenter.serverList}&quot;) final String serverList, @Value(&quot;${regCenter.namespace}&quot;) final String namespace) {\n\n        return new ZookeeperRegistryCenter(new ZookeeperConfiguration(serverList, namespace));\n    }\n\n}<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>\u539f\u56e0\uff1a\u6ce8\u5165\u7684SimpleJob\u4e0eJobScheduler\u7684Bean\u540d\u79f0\u5fc5\u987b\u4e0d\u80fd\u76f8\u540c \u9519\u8bef\u4ee3\u7801 @Configu [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[350],"tags":[],"class_list":["post-1794","post","type-post","status-publish","format-standard","hentry","category-elasticjob"],"_links":{"self":[{"href":"https:\/\/www.appblog.cn\/index.php\/wp-json\/wp\/v2\/posts\/1794","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.appblog.cn\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.appblog.cn\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.appblog.cn\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.appblog.cn\/index.php\/wp-json\/wp\/v2\/comments?post=1794"}],"version-history":[{"count":0,"href":"https:\/\/www.appblog.cn\/index.php\/wp-json\/wp\/v2\/posts\/1794\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.appblog.cn\/index.php\/wp-json\/wp\/v2\/media?parent=1794"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.appblog.cn\/index.php\/wp-json\/wp\/v2\/categories?post=1794"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.appblog.cn\/index.php\/wp-json\/wp\/v2\/tags?post=1794"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}