This is an automated email from the ASF dual-hosted git repository.
zhangliang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shardingsphere-elasticjob.git
The following commit(s) were added to refs/heads/master by this push:
new ad75f84 Fix spring namespace example for job-error-handler (#1617)
ad75f84 is described below
commit ad75f845683df3b65278406d2139ca8281cdc8dd
Author: Yanjie Zhou <[email protected]>
AuthorDate: Tue Oct 20 22:02:06 2020 +0800
Fix spring namespace example for job-error-handler (#1617)
* Fix spring example for job-error-handler
* Fix code style
---
.../job/parser/JobBeanDefinitionParser.java | 23 ++-
.../namespace/job/tag/JobBeanDefinitionTag.java | 2 +
.../main/resources/META-INF/applicationContext.xml | 189 ++++++++++++---------
3 files changed, 122 insertions(+), 92 deletions(-)
diff --git
a/elasticjob-lite/elasticjob-lite-spring/elasticjob-lite-spring-namespace/src/main/java/org/apache/shardingsphere/elasticjob/lite/spring/namespace/job/parser/JobBeanDefinitionParser.java
b/elasticjob-lite/elasticjob-lite-spring/elasticjob-lite-spring-namespace/src/main/java/org/apache/shardingsphere/elasticjob/lite/spring/namespace/job/parser/JobBeanDefinitionParser.java
index b198edb..d1b691a 100644
---
a/elasticjob-lite/elasticjob-lite-spring/elasticjob-lite-spring-namespace/src/main/java/org/apache/shardingsphere/elasticjob/lite/spring/namespace/job/parser/JobBeanDefinitionParser.java
+++
b/elasticjob-lite/elasticjob-lite-spring/elasticjob-lite-spring-namespace/src/main/java/org/apache/shardingsphere/elasticjob/lite/spring/namespace/job/parser/JobBeanDefinitionParser.java
@@ -7,7 +7,7 @@
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
- *
+ *
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -82,14 +82,8 @@ public final class JobBeanDefinitionParser extends
AbstractBeanDefinitionParser
} else {
result.addConstructorArgValue(Arrays.asList(element.getAttribute(JobBeanDefinitionTag.JOB_LISTENER_TYPES_ATTRIBUTE).split(",")));
}
- String tracingRef =
element.getAttribute(JobBeanDefinitionTag.TRACING_REF_ATTRIBUTE);
- if (Strings.isNullOrEmpty(tracingRef)) {
- result.addConstructorArgValue(Collections.emptyList());
- } else {
- Collection<BeanDefinition> extraConfigs = new ManagedList<>(1);
-
extraConfigs.add(parserContext.getRegistry().getBeanDefinition(tracingRef));
- result.addConstructorArgValue(extraConfigs);
- }
+ result.addConstructorArgValue(parseExtraConfigs(new
String[]{JobBeanDefinitionTag.TRACING_REF_ATTRIBUTE,
JobBeanDefinitionTag.ERROR_HANDLER_CONFIG_REF_ATTRIBUTE},
+ element, parserContext));
result.addConstructorArgValue(element.getAttribute(JobBeanDefinitionTag.DESCRIPTION_ATTRIBUTE));
result.addConstructorArgValue(parsePropsElement(element,
parserContext));
result.addConstructorArgValue(element.getAttribute(JobBeanDefinitionTag.DISABLED_ATTRIBUTE));
@@ -97,6 +91,17 @@ public final class JobBeanDefinitionParser extends
AbstractBeanDefinitionParser
return result.getBeanDefinition();
}
+ private Collection<BeanDefinition> parseExtraConfigs(final String[]
extraConfigRefs, final Element element, final ParserContext parserContext) {
+ Collection<BeanDefinition> result = new
ManagedList<>(extraConfigRefs.length);
+ for (String each : extraConfigRefs) {
+ String attribute = element.getAttribute(each);
+ if (!Strings.isNullOrEmpty(attribute)) {
+
result.add(parserContext.getRegistry().getBeanDefinition(attribute));
+ }
+ }
+ return result;
+ }
+
private Properties parsePropsElement(final Element element, final
ParserContext parserContext) {
Element propsElement = DomUtils.getChildElementByTagName(element,
JobBeanDefinitionTag.PROPS_TAG);
return null == propsElement ? new Properties() :
parserContext.getDelegate().parsePropsElement(propsElement);
diff --git
a/elasticjob-lite/elasticjob-lite-spring/elasticjob-lite-spring-namespace/src/main/java/org/apache/shardingsphere/elasticjob/lite/spring/namespace/job/tag/JobBeanDefinitionTag.java
b/elasticjob-lite/elasticjob-lite-spring/elasticjob-lite-spring-namespace/src/main/java/org/apache/shardingsphere/elasticjob/lite/spring/namespace/job/tag/JobBeanDefinitionTag.java
index 2bd207d..34f2493 100644
---
a/elasticjob-lite/elasticjob-lite-spring/elasticjob-lite-spring-namespace/src/main/java/org/apache/shardingsphere/elasticjob/lite/spring/namespace/job/tag/JobBeanDefinitionTag.java
+++
b/elasticjob-lite/elasticjob-lite-spring/elasticjob-lite-spring-namespace/src/main/java/org/apache/shardingsphere/elasticjob/lite/spring/namespace/job/tag/JobBeanDefinitionTag.java
@@ -62,6 +62,8 @@ public final class JobBeanDefinitionTag {
public static final String EXTRA_CONFIGURATION_REF_ATTRIBUTE =
"extra-configurations-ref";
+ public static final String ERROR_HANDLER_CONFIG_REF_ATTRIBUTE =
"error-handler-config-ref";
+
public static final String DESCRIPTION_ATTRIBUTE = "description";
public static final String PROPS_TAG = "props";
diff --git
a/examples/elasticjob-example-lite-spring/src/main/resources/META-INF/applicationContext.xml
b/examples/elasticjob-example-lite-spring/src/main/resources/META-INF/applicationContext.xml
index 970d988..f41ddfa 100644
---
a/examples/elasticjob-example-lite-spring/src/main/resources/META-INF/applicationContext.xml
+++
b/examples/elasticjob-example-lite-spring/src/main/resources/META-INF/applicationContext.xml
@@ -16,8 +16,8 @@
~ limitations under the License.
-->
-<beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+<beans xmlns="http://www.springframework.org/schema/beans"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:elasticjob="http://shardingsphere.apache.org/schema/elasticjob"
xsi:schemaLocation="http://www.springframework.org/schema/beans
@@ -27,95 +27,118 @@
http://shardingsphere.apache.org/schema/elasticjob
http://shardingsphere.apache.org/schema/elasticjob/elasticjob.xsd
">
- <context:component-scan
base-package="org.apache.shardingsphere.elasticjob.lite.example" />
- <context:property-placeholder location="classpath:conf/*.properties" />
-
- <elasticjob:zookeeper id="regCenter" server-lists="${serverLists}"
namespace="${namespace}"
base-sleep-time-milliseconds="${baseSleepTimeMilliseconds}"
max-sleep-time-milliseconds="${maxSleepTimeMilliseconds}"
max-retries="${maxRetries}" />
-
+ <context:component-scan
base-package="org.apache.shardingsphere.elasticjob.lite.example"/>
+ <context:property-placeholder location="classpath:conf/*.properties"/>
+
+ <elasticjob:zookeeper id="regCenter" server-lists="${serverLists}"
namespace="${namespace}"
+
base-sleep-time-milliseconds="${baseSleepTimeMilliseconds}"
+
max-sleep-time-milliseconds="${maxSleepTimeMilliseconds}"
max-retries="${maxRetries}"/>
+
<elasticjob:snapshot id="jobSnapshot" registry-center-ref="regCenter"
dump-port="9999"/>
-
+
<bean id="elasticJobTracingDataSource"
class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
- <property name="driverClassName" value="${event.rdb.driver}" />
- <property name="url" value="${event.rdb.url}" />
- <property name="username" value="${event.rdb.username}" />
- <property name="password" value="${event.rdb.password}" />
+ <property name="driverClassName" value="${event.rdb.driver}"/>
+ <property name="url" value="${event.rdb.url}"/>
+ <property name="username" value="${event.rdb.username}"/>
+ <property name="password" value="${event.rdb.password}"/>
</bean>
- <elasticjob:rdb-tracing id="elasticJobTrace"
data-source-ref="elasticJobTracingDataSource" />
-
- <bean id="simpleJob"
class="org.apache.shardingsphere.elasticjob.lite.example.job.simple.SpringSimpleJob"
/>
- <bean id="dataflowJob"
class="org.apache.shardingsphere.elasticjob.lite.example.job.dataflow.SpringDataflowJob"
/>
-
- <elasticjob:job id="${simple.id}" job-ref="simpleJob"
registry-center-ref="regCenter" tracing-ref="elasticJobTrace"
- sharding-total-count="${simple.shardingTotalCount}"
cron="${simple.cron}"
sharding-item-parameters="${simple.shardingItemParameters}"
monitor-execution="${simple.monitorExecution}" failover="${simple.failover}"
description="${simple.description}"
- disabled="${simple.disabled}" overwrite="${simple.overwrite}" />
-
- <elasticjob:job id="${dataflow.id}" job-ref="dataflowJob"
registry-center-ref="regCenter"
- sharding-total-count="${dataflow.shardingTotalCount}"
cron="${dataflow.cron}"
sharding-item-parameters="${dataflow.shardingItemParameters}"
monitor-execution="${dataflow.monitorExecution}"
failover="${dataflow.failover}"
max-time-diff-seconds="${dataflow.maxTimeDiffSeconds}"
description="${dataflow.description}"
- disabled="${dataflow.disabled}" overwrite="${dataflow.overwrite}">
+
+ <elasticjob:rdb-tracing id="elasticJobTrace"
data-source-ref="elasticJobTracingDataSource"/>
+
+
+ <bean id="simpleJob"
class="org.apache.shardingsphere.elasticjob.lite.example.job.simple.SpringSimpleJob"/>
+ <bean id="dataflowJob"
class="org.apache.shardingsphere.elasticjob.lite.example.job.dataflow.SpringDataflowJob"/>
+
+ <elasticjob:job id="${simple.id}" job-ref="simpleJob"
registry-center-ref="regCenter" tracing-ref="elasticJobTrace"
+ sharding-total-count="${simple.shardingTotalCount}"
cron="${simple.cron}"
+ sharding-item-parameters="${simple.shardingItemParameters}"
+ monitor-execution="${simple.monitorExecution}"
failover="${simple.failover}"
+ description="${simple.description}"
+ disabled="${simple.disabled}"
overwrite="${simple.overwrite}"/>
+
+ <elasticjob:job id="${dataflow.id}" job-ref="dataflowJob"
registry-center-ref="regCenter"
+ sharding-total-count="${dataflow.shardingTotalCount}"
cron="${dataflow.cron}"
+
sharding-item-parameters="${dataflow.shardingItemParameters}"
+ monitor-execution="${dataflow.monitorExecution}"
failover="${dataflow.failover}"
+ max-time-diff-seconds="${dataflow.maxTimeDiffSeconds}"
description="${dataflow.description}"
+ disabled="${dataflow.disabled}"
overwrite="${dataflow.overwrite}">
<props>
<prop key="streaming.process">${dataflow.streamingProcess}</prop>
</props>
</elasticjob:job>
-
+
<!-- use absolute path to run script job -->
<!--<elasticjob:job id="${script.id}" registry-center-ref="regCenter" -->
- <!--sharding-total-count="${script.shardingTotalCount}"
cron="${script.cron}"
sharding-item-parameters="${script.shardingItemParameters}"
description="${script.description}" -->
- <!--overwrite="${script.overwrite}">-->
- <!--<props>-->
- <!--<prop
key="script.command.line">${script.scriptCommandLine}</prop>-->
- <!--</props>-->
+ <!--sharding-total-count="${script.shardingTotalCount}"
cron="${script.cron}"
sharding-item-parameters="${script.shardingItemParameters}"
description="${script.description}" -->
+ <!--overwrite="${script.overwrite}">-->
+ <!--<props>-->
+ <!--<prop key="script.command.line">${script.scriptCommandLine}</prop>-->
+ <!--</props>-->
<!--</elasticjob:job>-->
-
- <bean id="occurErrorNoticeDingtalkJob"
class="org.apache.shardingsphere.elasticjob.lite.example.job.simple.JavaOccurErrorJob"
/>
-
- <elasticjob:job id="${occurErrorNoticeDingtalkJob.id}"
job-ref="occurErrorNoticeDingtalkJob" registry-center-ref="regCenter"
tracing-ref="elasticJobTrace"
-
sharding-total-count="${occurErrorNoticeDingtalkJob.shardingTotalCount}"
cron="${occurErrorNoticeDingtalkJob.cron}"
sharding-item-parameters="${occurErrorNoticeDingtalkJob.shardingItemParameters}"
-
monitor-execution="${occurErrorNoticeDingtalkJob.monitorExecution}"
failover="${occurErrorNoticeDingtalkJob.failover}"
description="${occurErrorNoticeDingtalkJob.description}"
-
job-error-handler-type="${occurErrorNoticeDingtalkJob.jobErrorHandlerType}"
- disabled="${occurErrorNoticeDingtalkJob.disabled}"
overwrite="${occurErrorNoticeDingtalkJob.overwrite}" >
- <props>
- <prop
key="dingtalk.webhook">https://oapi.dingtalk.com/robot/send?access_token=42eead064e81ce81fc6af2c107fbe10a4339a3d40a7db8abf5b34d8261527a3f</prop>
- <prop key="dingtalk.keyword">keyword</prop>
- <prop
key="dingtalk.secret">SEC0b0a6b13b6823b95737dd83491c23adee5d8a7a649899a12217e038eddc84ff4</prop>
- <prop key="dingtalk.connectTimeoutMillisecond">3000</prop>
- <prop key="dingtalk.readTimeoutMillisecond">5000</prop>
- </props>
- </elasticjob:job>
-
- <bean id="occurErrorNoticeWechatJob"
class="org.apache.shardingsphere.elasticjob.lite.example.job.simple.JavaOccurErrorJob"
/>
-
- <elasticjob:job id="${occurErrorNoticeWechatJob.id}"
job-ref="occurErrorNoticeWechatJob" registry-center-ref="regCenter"
tracing-ref="elasticJobTrace"
-
sharding-total-count="${occurErrorNoticeWechatJob.shardingTotalCount}"
cron="${occurErrorNoticeWechatJob.cron}"
sharding-item-parameters="${occurErrorNoticeWechatJob.shardingItemParameters}"
-
monitor-execution="${occurErrorNoticeWechatJob.monitorExecution}"
failover="${occurErrorNoticeWechatJob.failover}"
description="${occurErrorNoticeWechatJob.description}"
-
job-error-handler-type="${occurErrorNoticeWechatJob.jobErrorHandlerType}"
- disabled="${occurErrorNoticeWechatJob.disabled}"
overwrite="${occurErrorNoticeWechatJob.overwrite}" >
- <props>
- <prop
key="wechat.webhook">https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=5308e20a-2900-484b-a332-b5bb701ade04</prop>
- <prop key="wechat.connectTimeout">3000</prop>
- <prop key="wechat.readTimeout">5000</prop>
- </props>
- </elasticjob:job>
-
- <bean id="occurErrorNoticeEmailJob"
class="org.apache.shardingsphere.elasticjob.lite.example.job.simple.JavaOccurErrorJob"
/>
-
-<!-- <elasticjob:job id="${occurErrorNoticeEmailJob.id}"
job-ref="occurErrorNoticeEmailJob" registry-center-ref="regCenter"
tracing-ref="elasticJobTrace"-->
-<!--
sharding-total-count="${occurErrorNoticeEmailJob.shardingTotalCount}"
cron="${occurErrorNoticeEmailJob.cron}"
sharding-item-parameters="${occurErrorNoticeEmailJob.shardingItemParameters}"
-->
-<!--
monitor-execution="${occurErrorNoticeEmailJob.monitorExecution}"
failover="${occurErrorNoticeEmailJob.failover}"
description="${occurErrorNoticeEmailJob.description}"-->
-<!--
job-error-handler-type="${occurErrorNoticeEmailJob.jobErrorHandlerType}"-->
-<!-- disabled="${occurErrorNoticeEmailJob.disabled}"
overwrite="${occurErrorNoticeEmailJob.overwrite}" >-->
-<!-- <props>-->
-<!-- <prop key="email.host">host</prop>-->
-<!-- <prop key="email.port">465</prop>-->
-<!-- <prop key="email.username">username</prop>-->
-<!-- <prop key="email.password">password</prop>-->
-<!-- <prop key="email.protocol">smtp</prop>-->
-<!-- <prop key="email.useSsl">true</prop>-->
-<!-- <prop key="email.subject">ElasticJob error message</prop>-->
-<!-- <prop key="email.form">[email protected]</prop>-->
-<!-- <prop key="email.to">[email protected],[email protected]</prop>-->
-<!-- <prop key="email.cc">[email protected]</prop>-->
-<!-- <prop key="email.bcc">[email protected]</prop>-->
-<!-- <prop key="email.debug">false</prop>-->
-<!-- </props>-->
-<!-- </elasticjob:job>-->
+
+ <!-- use dingtalk error handler -->
+ <!-- <elasticjob:dingtalk-error-handler
id="dingtalkErrorHandlerConfig"-->
+ <!--
webhook="https://oapi.dingtalk.com/robot/send?access_token=token"-->
+ <!-- keyword="keyword"
secret="secret"-->
+ <!--
connect-timeout-millisecond="3000"-->
+ <!--
read-timeout-millisecond="5000"/>-->
+ <!-- -->
+ <!-- <bean id="occurErrorNoticeDingtalkJob"-->
+ <!--
class="org.apache.shardingsphere.elasticjob.lite.example.job.simple.JavaOccurErrorJob"/>-->
+
+ <!-- <elasticjob:job id="${occurErrorNoticeDingtalkJob.id}"
job-ref="occurErrorNoticeDingtalkJob"-->
+ <!-- registry-center-ref="regCenter"
tracing-ref="elasticJobTrace"-->
+ <!--
sharding-total-count="${occurErrorNoticeDingtalkJob.shardingTotalCount}"-->
+ <!-- cron="${occurErrorNoticeDingtalkJob.cron}"-->
+ <!--
sharding-item-parameters="${occurErrorNoticeDingtalkJob.shardingItemParameters}"-->
+ <!--
monitor-execution="${occurErrorNoticeDingtalkJob.monitorExecution}"-->
+ <!--
failover="${occurErrorNoticeDingtalkJob.failover}"-->
+ <!--
description="${occurErrorNoticeDingtalkJob.description}"-->
+ <!--
job-error-handler-type="${occurErrorNoticeDingtalkJob.jobErrorHandlerType}"-->
+ <!--
error-handler-config-ref="dingtalkErrorHandlerConfig"-->
+ <!--
disabled="${occurErrorNoticeDingtalkJob.disabled}"-->
+ <!--
overwrite="${occurErrorNoticeDingtalkJob.overwrite}" />-->
+
+ <!-- use wechat error handler -->
+ <!-- <bean id="occurErrorNoticeWechatJob"-->
+ <!--
class="org.apache.shardingsphere.elasticjob.lite.example.job.simple.JavaOccurErrorJob"/>-->
+
+ <!-- <elasticjob:wechat-error-handler id="wechatErrorHandlerConfig"-->
+ <!--
webhook="https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=key"-->
+ <!--
connect-timeout-millisecond="3000"-->
+ <!--
read-timeout-millisecond="5000"/>-->
+
+ <!-- <elasticjob:job id="${occurErrorNoticeWechatJob.id}"
job-ref="occurErrorNoticeWechatJob"-->
+ <!-- registry-center-ref="regCenter"
tracing-ref="elasticJobTrace"-->
+ <!--
sharding-total-count="${occurErrorNoticeWechatJob.shardingTotalCount}"-->
+ <!-- cron="${occurErrorNoticeWechatJob.cron}"-->
+ <!--
sharding-item-parameters="${occurErrorNoticeWechatJob.shardingItemParameters}"-->
+ <!--
monitor-execution="${occurErrorNoticeWechatJob.monitorExecution}"-->
+ <!-- failover="${occurErrorNoticeWechatJob.failover}"-->
+ <!--
description="${occurErrorNoticeWechatJob.description}"-->
+ <!--
job-error-handler-type="${occurErrorNoticeWechatJob.jobErrorHandlerType}"-->
+ <!--
error-handler-config-ref="wechatErrorHandlerConfig"-->
+ <!-- disabled="${occurErrorNoticeWechatJob.disabled}"
overwrite="${occurErrorNoticeWechatJob.overwrite}" />-->
+
+ <!-- use email error handler -->
+ <!-- <bean id="occurErrorNoticeEmailJob"-->
+ <!--
class="org.apache.shardingsphere.elasticjob.lite.example.job.simple.JavaOccurErrorJob"/>-->
+
+ <!-- <elasticjob:email-error-handler id="emailErrorHandlerConfig"
host="host" port="465" username="username"-->
+ <!-- password="password" use-ssl="true"
subject="ElasticJob error message"-->
+ <!-- from="[email protected]"
to="[email protected],[email protected]"-->
+ <!-- cc="[email protected]"
bcc="[email protected]"-->
+ <!-- debug="false"/>-->
+
+ <!-- <elasticjob:job id="${occurErrorNoticeEmailJob.id}"
job-ref="occurErrorNoticeEmailJob"-->
+ <!-- registry-center-ref="regCenter"
tracing-ref="elasticJobTrace"-->
+ <!--
sharding-total-count="${occurErrorNoticeEmailJob.shardingTotalCount}"-->
+ <!-- cron="${occurErrorNoticeEmailJob.cron}"-->
+ <!--
sharding-item-parameters="${occurErrorNoticeEmailJob.shardingItemParameters}"-->
+ <!--
monitor-execution="${occurErrorNoticeEmailJob.monitorExecution}"-->
+ <!-- failover="${occurErrorNoticeEmailJob.failover}"-->
+ <!--
description="${occurErrorNoticeEmailJob.description}"-->
+ <!--
job-error-handler-type="${occurErrorNoticeEmailJob.jobErrorHandlerType}"-->
+ <!--
error-handler-config-ref="emailErrorHandlerConfig"-->
+ <!-- disabled="${occurErrorNoticeEmailJob.disabled}"
overwrite="${occurErrorNoticeEmailJob.overwrite}" />-->
</beans>