You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by zh...@apache.org on 2020/10/21 03:54:20 UTC

[shardingsphere-elasticjob] branch master updated: Add usage of error-handler for spring-namespace (#1623)

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 9e34992  Add usage of  error-handler  for spring-namespace  (#1623)
9e34992 is described below

commit 9e34992b720cbc2decdd035e4663c41151bb94b5
Author: Yanjie Zhou <zh...@aliyun.com>
AuthorDate: Wed Oct 21 11:54:11 2020 +0800

    Add usage of  error-handler  for spring-namespace  (#1623)
    
    * Revise java-api then error handler configuration to build
    
    * Add error handel docs for spring-namespace.*.md
---
 .../elasticjob-lite/usage/job-api/java-api.cn.md   |  8 +-
 .../elasticjob-lite/usage/job-api/java-api.en.md   |  8 +-
 .../usage/job-api/spring-namespace.cn.md           | 66 ++++++++++++++++
 .../usage/job-api/spring-namespace.en.md           | 90 +++++++++++++++++++---
 4 files changed, 152 insertions(+), 20 deletions(-)

diff --git a/docs/content/user-manual/elasticjob-lite/usage/job-api/java-api.cn.md b/docs/content/user-manual/elasticjob-lite/usage/job-api/java-api.cn.md
index 22356c1..f7a3b63 100644
--- a/docs/content/user-manual/elasticjob-lite/usage/job-api/java-api.cn.md
+++ b/docs/content/user-manual/elasticjob-lite/usage/job-api/java-api.cn.md
@@ -230,8 +230,7 @@ public class JobDemo {
 
     private static void setEmailConfiguration(final JobConfiguration jobConfig) {
         // 设置邮件的配置
-        jobConfig.getExtraConfigurations().add(new EmailConfiguration(
-                "host", 465, "username", "password", true, "Test elasticJob error message", "from@xxx.com", "to1@xxx.com,to2xxx.com", "cc@xxx.com", "bcc@xxx.com", false));
+        jobConfig.getExtraConfigurations().add(EmailConfiguration.newBuilder("host", 465, "username", "password", "from@xxx.xx", "to1@xxx.xx,to2xxx.xx").build());
     }
 
     private static CoordinatorRegistryCenter createRegistryCenter() {
@@ -280,7 +279,7 @@ public class JobDemo {
 
     private static void setWechatConfiguration(final JobConfiguration jobConfig) {
         // 设置企业微信的配置
-        jobConfig.getExtraConfigurations().add(new WechatConfiguration("webhook", 3000, 5000));
+        jobConfig.getExtraConfigurations().add(WechatConfiguration.newBuilder("you_webhook").build());
     }
 
     private static CoordinatorRegistryCenter createRegistryCenter() {
@@ -330,8 +329,7 @@ public class JobDemo {
 
     private static void setDingtalkConfiguration(final JobConfiguration jobConfig) {
         // 设置钉钉的配置
-        jobConfig.getExtraConfigurations().add(new DingtalkConfiguration("webhook", 
-                "keyword", "secret", 3000, 5000));
+        jobConfig.getExtraConfigurations().add(DingtalkConfiguration.newBuilder("you_webhook").keyword("keyword").secret("secret").build());
     }
 
     private static CoordinatorRegistryCenter createRegistryCenter() {
diff --git a/docs/content/user-manual/elasticjob-lite/usage/job-api/java-api.en.md b/docs/content/user-manual/elasticjob-lite/usage/job-api/java-api.en.md
index 3c1125b..793c843 100644
--- a/docs/content/user-manual/elasticjob-lite/usage/job-api/java-api.en.md
+++ b/docs/content/user-manual/elasticjob-lite/usage/job-api/java-api.en.md
@@ -229,8 +229,7 @@ public class JobDemo {
 
     private static void setEmailConfiguration(final JobConfiguration jobConfig) {
         // Set the mail configuration.
-        jobConfig.getExtraConfigurations().add(new EmailConfiguration(
-                "host", 465, "username", "password", true, "Test elasticJob error message", "from@xxx.com", "to1@xxx.com,to2xxx.com", "cc@xxx.com", "bcc@xxx.com", false));
+        jobConfig.getExtraConfigurations().add(EmailConfiguration.newBuilder("host", 465, "username", "password", "from@xxx.xx", "to1@xxx.xx,to2xxx.xx").build());
     }
 
     private static CoordinatorRegistryCenter createRegistryCenter() {
@@ -279,7 +278,7 @@ public class JobDemo {
 
     private static void setWechatConfiguration(final JobConfiguration jobConfig) {
         // Set the configuration for the enterprise wechat.
-        jobConfig.getExtraConfigurations().add(new WechatConfiguration("webhook", 3000, 5000));
+        jobConfig.getExtraConfigurations().add(WechatConfiguration.newBuilder("you_webhook").build());
     }
 
     private static CoordinatorRegistryCenter createRegistryCenter() {
@@ -328,8 +327,7 @@ public class JobDemo {
 
     private static void setDingtalkConfiguration(final JobConfiguration jobConfig) {
         // Set the configuration of the dingtalk.
-        jobConfig.getExtraConfigurations().add(new DingtalkConfiguration("webhook", 
-                "keyword", "secret", 3000, 5000));
+        jobConfig.getExtraConfigurations().add(DingtalkConfiguration.newBuilder("you_webhook").keyword("keyword").secret("secret").build());
     }
 
     private static CoordinatorRegistryCenter createRegistryCenter() {
diff --git a/docs/content/user-manual/elasticjob-lite/usage/job-api/spring-namespace.cn.md b/docs/content/user-manual/elasticjob-lite/usage/job-api/spring-namespace.cn.md
index eb2f98f..a10cb2c 100644
--- a/docs/content/user-manual/elasticjob-lite/usage/job-api/spring-namespace.cn.md
+++ b/docs/content/user-manual/elasticjob-lite/usage/job-api/spring-namespace.cn.md
@@ -70,3 +70,69 @@ ElasticJob-Lite 提供自定义的 Spring 命名空间,可以与 Spring 容器
     <elasticjob:snapshot id="jobSnapshot" registry-center-ref="regCenter" dump-port="9999" />    
 </beans>
 ```
+
+
+## 配置错误处理策略
+
+使用 ElasticJob-Lite 过程中当作业发生异常后,可采用以下错误处理策略。
+
+| *错误处理策略名称*         | *说明*                            |  *是否内置* | *是否默认*| *是否需要额外配置* |
+| ----------------------- | --------------------------------- |  -------  |  --------|  -------------  |
+| 记录日志策略              | 记录作业异常日志,但不中断作业执行     |   是       |     是   |                 |
+| 抛出异常策略              | 抛出系统异常并中断作业执行            |   是       |         |                 |
+| 忽略异常策略              | 忽略系统异常且不中断作业执行          |   是       |          |                 |
+| 邮件通知策略              | 发送邮件消息通知,但不中断作业执行     |            |          |      是         |
+| 企业微信通知策略           | 发送企业微信消息通知,但不中断作业执行 |            |          |      是          |
+| 钉钉通知策略              | 发送钉钉消息通知,但不中断作业执行     |            |          |      是          |
+
+以下示例用于展示如何通过 Spring 命名空间配置错误处理策略。
+
+
+```xml
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xmlns:elasticjob="http://shardingsphere.apache.org/schema/elasticjob"
+       xsi:schemaLocation="http://www.springframework.org/schema/beans
+                           http://www.springframework.org/schema/beans/spring-beans.xsd
+                           http://shardingsphere.apache.org/schema/elasticjob
+                           http://shardingsphere.apache.org/schema/elasticjob/elasticjob.xsd
+                         ">
+    
+    <!-- 记录日志策略 -->
+    <elasticjob:job  ... job-error-handler-type="LOG"   />
+
+    <!-- 抛出异常策略 -->
+    <elasticjob:job  ... job-error-handler-type="THROW"   />
+
+    <!-- 忽略异常策略 -->
+    <elasticjob:job  ... job-error-handler-type="IGNORE"   />
+
+    <!-- 邮件通知策略 -->
+    <elasticjob:email-error-handler id="emailErrorHandlerConfig" host="host" port="465" username="username"
+                                    password="password" use-ssl="true" subject="ElasticJob error message"
+                                    from="from@xxx.com" to="to1@xxx.com,to2@xxx.com"
+                                    cc="cc@xxx.com" bcc="bcc@xxx.com"
+                                    debug="false"/>
+
+    <elasticjob:job  ... job-error-handler-type="EMAIL"  error-handler-config-ref="emailErrorHandlerConfig" />
+
+
+    <!-- 企业微信通知策略 -->
+    <elasticjob:wechat-error-handler id="wechatErrorHandlerConfig"
+                                        webhook="you_webhook"
+                                        connect-timeout-millisecond="3000"
+                                        read-timeout-millisecond="5000"/>
+
+    <elasticjob:job  ... job-error-handler-type="WECHAT"  error-handler-config-ref="wechatErrorHandlerConfig" />
+
+    <!-- 钉钉通知策略 -->
+    <elasticjob:dingtalk-error-handler id="dingtalkErrorHandlerConfig"
+                                       webhook="you_webhook"
+                                       keyword="keyword" secret="secret"
+                                       connect-timeout-millisecond="3000"
+                                       read-timeout-millisecond="5000"/>
+
+    <elasticjob:job  ... job-error-handler-type="DINGTALK"  error-handler-config-ref="dingtalkErrorHandlerConfig" />
+</beans>
+```
\ No newline at end of file
diff --git a/docs/content/user-manual/elasticjob-lite/usage/job-api/spring-namespace.en.md b/docs/content/user-manual/elasticjob-lite/usage/job-api/spring-namespace.en.md
index f49c070..7b0f147 100644
--- a/docs/content/user-manual/elasticjob-lite/usage/job-api/spring-namespace.en.md
+++ b/docs/content/user-manual/elasticjob-lite/usage/job-api/spring-namespace.en.md
@@ -53,15 +53,85 @@ Please refer to [Operation Manual](/en/user-manual/elasticjob-lite/operation/dum
 
 The example below is how to configure SnapshotService for open listener port to dump.
 
-```java
-public class JobMain {
-    
-    public static void main(final String[] args) {
-        SnapshotService snapshotService = new SnapshotService(regCenter, 9888).listen();
-    }
+```xml
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xmlns:elasticjob="http://shardingsphere.apache.org/schema/elasticjob"
+       xsi:schemaLocation="http://www.springframework.org/schema/beans
+                           http://www.springframework.org/schema/beans/spring-beans.xsd
+                           http://shardingsphere.apache.org/schema/elasticjob
+                           http://shardingsphere.apache.org/schema/elasticjob/elasticjob.xsd
+                         ">
+    <!--Create registry center -->
+    <elasticjob:zookeeper id="regCenter" server-lists="yourhost:2181" namespace="dd-job" base-sleep-time-milliseconds="1000" max-sleep-time-milliseconds="3000" max-retries="3" />
     
-    private static CoordinatorRegistryCenter createRegistryCenter() {
-        // Create registry center
-    }
-}
+    <!--Configure the task snapshot export service -->
+    <elasticjob:snapshot id="jobSnapshot" registry-center-ref="regCenter" dump-port="9999" />    
+</beans>
 ```
+
+## Configuration error handler strategy
+
+In the process of using ElasticJob-Lite, when the job is abnormal, the following error handling strategies can be used.
+
+| *Error handler strategy name*            | *Description*                                                 |  *Built-in*  | *Default*| *Extra config*   |
+| ---------------------------------------- | ------------------------------------------------------------- |  -------     |  --------|  --------------  |
+| Log Strategy                             | Log error and do not interrupt job                            |   Yes        |     Yes  |                  |
+| Throw Strategy                           | Throw system exception and interrupt job                      |   Yes        |          |                  |
+| Ignore Strategy                          | Ignore exception and do not interrupt job                     |   Yes        |          |                  |
+| Email Notification Strategy              | Send email message notification and do not interrupt job      |              |          |    Yes           |
+| Wechat Enterprise Notification Strategy  | Send wechat message notification and do not interrupt job     |              |          |    Yes           |
+| Dingtalk Notification Strategy           | Send dingtalk message notification and do not interrupt job   |              |          |    Yes           |
+
+The following example shows how to configure the error-handling policy through the Spring namespace.
+
+
+```xml
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xmlns:elasticjob="http://shardingsphere.apache.org/schema/elasticjob"
+       xsi:schemaLocation="http://www.springframework.org/schema/beans
+                           http://www.springframework.org/schema/beans/spring-beans.xsd
+                           http://shardingsphere.apache.org/schema/elasticjob
+                           http://shardingsphere.apache.org/schema/elasticjob/elasticjob.xsd
+                         ">
+    
+    <!-- Log Strategy -->
+    <elasticjob:job  ... job-error-handler-type="LOG"   />
+
+    <!-- Throw Strategy -->
+    <elasticjob:job  ... job-error-handler-type="THROW"   />
+
+    <!-- Ignore Strategy -->
+    <elasticjob:job  ... job-error-handler-type="IGNORE"   />
+
+    <!-- Email Notification Strategy  -->
+    <elasticjob:email-error-handler id="emailErrorHandlerConfig" host="host" port="465" username="username"
+                                    password="password" use-ssl="true" subject="ElasticJob error message"
+                                    from="from@xxx.com" to="to1@xxx.com,to2@xxx.com"
+                                    cc="cc@xxx.com" bcc="bcc@xxx.com"
+                                    debug="false"/>
+
+    <elasticjob:job  ... job-error-handler-type="EMAIL"  error-handler-config-ref="emailErrorHandlerConfig" />
+
+
+    <!-- Wechat Enterprise Notification Strategy -->
+    <elasticjob:wechat-error-handler id="wechatErrorHandlerConfig"
+                                        webhook="you_webhook"
+                                        connect-timeout-millisecond="3000"
+                                        read-timeout-millisecond="5000"/>
+
+    <elasticjob:job  ... job-error-handler-type="WECHAT"  error-handler-config-ref="wechatErrorHandlerConfig" />
+
+    <!-- Dingtalk Notification Strategy  -->
+    <elasticjob:dingtalk-error-handler id="dingtalkErrorHandlerConfig"
+                                       webhook="you_webhook"
+                                       keyword="keyword" secret="secret"
+                                       connect-timeout-millisecond="3000"
+                                       read-timeout-millisecond="5000"/>
+
+    <elasticjob:job  ... job-error-handler-type="DINGTALK"  error-handler-config-ref="dingtalkErrorHandlerConfig" />
+</beans>
+```
\ No newline at end of file