日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

快速入門

任務調度產品支持多種任務類型,包括簡單任務、集群任務,您可以根據業務的需求,選擇其一實現業務。本文以簡單任務為例,介紹如何快速完成一個簡單任務的本地開發以及控制臺任務配置等。

說明

若您需要任務調度工程示例代碼,請下載 示例工程

操作步驟

  1. 本地應用開發。

    1. 創建 SOFABoot 工程。

      下載并配置好一個 SOFABoot 工程原型。配置步驟,請參見 快速開始

      說明

      任務調度客戶端支持使用 SOFABoot 框架或其它 Maven 工程框架開發。此處以 SOFABoot 為例介紹應用開發示例。非 SOFABoot 工程的配置,請參見 非 SOFABoot 工程。

    2. 引入任務調度的依賴。

      1. 在 SOFABoot 工程中引入任務調度的依賴:

        <dependency>
             <groupId>com.alipay.sofa</groupId>
             <artifactId>scheduler-enterprise-sofa-boot-starter</artifactId>
        </dependency>
      2. 對于 SOFABoot 3.4.3 以下的版本,需要添加如下 Tracer 依賴。

        說明

        • 添加前,請仔細檢查工程是否已經依賴了 Tracer,避免 JAR 包沖突問題。

        • SOFABoot 已在 3.4.3 及其以上版本自動依賴 Tracer,無需再手動添加。SOFABoot 最新版本信息,詳見 SOFABoot 版本說明

        <dependency>
             <groupId>com.alipay.sofa</groupId>
             <artifactId>tracer-enterprise-sofa-boot-starter</artifactId>
        </dependency>
    3. 修改全局配置項。

      application.properties 文件中,完成中間件全局配置。詳情請參見 properties 配置項

    4. 實現處理器接口。

      客戶端提供了 ISimpleJobHandler 接口給業務方實現,通過實現該接口編寫業務邏輯代碼。

      /**
       * 簡單任務處理器接口。
       */
      public interface ISimpleJobHandler extends IJobHandler{
      
          /**
           * 處理 request。
           *
           * @param context
           * @return
           */
          ClientCommonResult handle(JobExecuteContext context);
      }

      代碼說明:

      • JobExecuteContext 是觸發任務的請求上下文,您可以從里面獲取到任務的一些信息。例如在控制臺創建任務時設置的自定義參數,可以通過 getCustomParam(String key) 方法獲取。

      • 如果設置了任務分片,可以通過方法 getSharding() 獲取當前機器分配到的分片號。詳細信息可以查看 com.alipay.antschedulerclient.model.JobExecuteContext 這個類的源碼。

    5. 實現類。

      類里必須分別實現 handlegetThreadPoolgetName 方法。

      • handle:在該方法里執行業務邏輯。

      • getThreadPool:獲取一個執行該任務的線程池,如果沒有設置,會使用客戶端自帶的線程池。

      • getName:獲取這個執行器的名字。客戶端接收到任務的觸發請求時,會根據名字尋找匹配的執行器。

        說明

        當任務需要按多個步驟執行時,需要寫多個實現類,并在控制臺開啟分步。

        代碼示例如下:

        public class AlwaysSuccessHandler implements ISimpleJobHandler{
            private static final String NAME ="ALWAYS_SUCCESS_JOB";
            private static final ThreadPoolExecutor executor =new ThreadPoolExecutor(20,
                    300,1,TimeUnit.HOURS,new ArrayBlockingQueue<Runnable>(100){})
        
            /**
             * 處理業務邏輯。
             **/
            @Override
            public ClientCommonResult handle(JobExecuteContext context) throws InterruptedException{
                // 獲取自定義參數。
                Integer num =(Integer) context.getCustomParam("num");
                if(num ==null){
                    num =0;
                }
                num = num +1;
                // 更新自定義參數。
                context.putCustomParams("num",5);
                return ClientCommonResult.buildSuccessResult();
            }
        
            @Override
            public ThreadPoolExecutor getThreadPool(){
                // 建議使用自定義實現類。
                return executor;
            }
        
            @Override
            public String getName(){
                // handler 名字,管控頁面配置的 handler 即這部分定義內容。
                return NAME;
            }
        }
        
    6. 配置 Spring。

      通過以下任一方式將接口實現類配置為 Spring Bean:

      • src/main/resources/META-INF/xxx/xxx-xxx.xml 文件中進行配置。示例如下:

        <bean id="sampleService" class="com.antcloud.demo.antscheduler.service.SampleServiceImpl"/>
      • 使用注解驅動(annotation-driven)的方式聲明 Bean。

  2. 在云端發布應用。

    本地客戶端開發完成后,您需要將其發布部署到 SOFAStack 經典應用服務。詳細步驟,請參見 發布部署應用

  3. 在控制臺配置調度任務。

    1. 登錄任務調度控制臺。

    2. 在左側導航欄選擇 中間件 > 任務調度 > 任務配置

    3. 選擇 添加任務 > 簡單任務,然后配置以下參數:

      參數

      說明

      任務名稱

      配置任務的名稱,用于識別任務。

      應用名稱

      填寫或選擇目標應用名稱。

      必須與工程中 application.properties 文件的 spring.application.name 配置的應用名稱一致。

      調度類型

      配置任務調度的類型,可選值:

      • cron 表達式觸發:該類型的任務在創建時需要配置 CRON 表達式定時觸發任務。

      • 事件觸發:該類型的任務通過外部事件觸發任務。

      • 定時觸發:該類型的任務在創建時也需要配置 CRON 表達式定時觸發,并且只能執行一次。

      Cron 表達式

      配置 CRON 表達式,用于定時觸發任務。配置方式請參見 CRON 表達式詳解

      僅在 調度類型cron 表達式觸發 時配置。

      任務分組(可選)

      選擇或新建一個任務分組,方便歸納管理任務。

      執行器名字

      必須與代碼中任務處理器名字一致,即 實現類 步驟中 getName 方法獲取的執行器名字。

      是否分片

      選擇任務是否開啟分片:

      • 不開啟分片,任務將只調度到一臺客戶端服務器上執行。

      • 開啟分片,并設置分片數為 N,任務則會同時觸發到 N 臺客戶端服務器上并發執行。

        如果您開啟了分片,您還需在本地工程編碼實現任務分片。代碼參見下文 任務分片示例代碼

      自定義參數(可選)

      自定義參數支持從控制臺向任務傳遞參數,參數也可以在任務間傳遞,格式為:key=value

      參數配置說明如下:

      • 參數名:設置自定義參數的名稱。

        支持英文大小寫、數字、下劃線(_), 不能超過 128 字符。

      • 類型 參數值:可選類型和參數值配置方式如下。

        • STRING:支持通用的字符串。

        • LIST:支持字符串數組,例如:["aaa","bbb"]

        • BOOLEAN:支持 true 或 false。

        • PLACEHOLDER:支持參數替換,目前支持的變量如下:

          • ${sharding}:替換當前分片值,配合簡單任務使用。

          • ${shardingCount}:替換簡單任務配置的分片數。

          • ${triggerTime}:替換預期的觸發時間。

      說明

      您也可以在業務端通過上下文 context(該對象必須實現 Serializable。)獲取和覆蓋自定義參數。代碼參見下文 獲取和覆蓋自定義參數示例代碼

      路由策略

      選擇執行任務的路由策略,可選值:

      • 隨機:每次執行都隨機分發到客戶端服務器上。

      • 定向:每次執行都分發到同一個客戶端服務器上。

        暫不支持指定客戶端服務器 IP。

      • 輪詢:每次執行依次分發到每臺客戶端服務器上。

      通信方式

      選擇任務的通信方式,可選值:

      • 單向 ONEWAY:單向操作,沒有返回值。控制臺不記錄觸發記錄、無超時、無重試。

        高頻非重要任務時建議使用。

      • 回調 CALLBACK:雙向操作,有返回值。控制臺可查看觸發記錄、可設置超時、可重試。

        重要任務時建議使用,觸發間隔至少 5 分鐘。

      任務互斥

      選擇是否開啟任務互斥模式。開啟任務互斥模式時,處在“執行中”或“暫停”狀態的任務即使已經達到下一個任務觸發時間點,仍無法再次觸發。本次調度狀態以“跳過”標記。默認為不開啟。

      僅當 通信方式 設置為 回調 CALLBACK 時配置。

      漏觸發策略

      設置任務漏觸發時的處理策略,可選值:

      • 忽略:不進行補償處理。

      • 立即觸發:立即重新觸發。

      • 時間充裕時觸發:是否進行補償觸發取決于下次觸發前的剩余時間是否充裕。若當前時間 + 超時時間 < 下次觸發時間,則進行補償觸發,并將此次補償觸發插入觸發記錄;反之,則不觸發。多次漏觸發進行恢復時僅進行一次補償觸發。

      僅當 通信方式 設置為 回調 CALLBACK,且 調度類型 cron 表達式觸發 時,可配置此項。

      超時策略

      設置任務執行超時后的處理策略,可選值:

      • 不處理:觸發記錄和執行記錄狀態均標記為失敗。

      • 按失敗策略重試:本次調度記錄狀態標為失敗,并按照 失敗處理策略 進行失敗重試。重試后本次調度記錄將被重置為重試結果。

      • 停止后續觸發:執行記錄狀態為失敗,觸發記錄狀態為超時,并且無法再次觸發。僅當開啟任務互斥模式時可選擇此項。

      僅當 通信方式 設置為 回調 CALLBACK 時配置。

      超時時間

      設置任務執行的超時時間,當任務超過此時間未回調則認為執行失敗。單位可選擇為 分鐘小時

      僅當 通信方式 設置為 回調 CALLBACK 時配置。

      失敗處理策略

      設置任務執行失敗后的處理策略,可選值:

      • 不重試:失敗后不進行重試。

      • 最多重試三次:失敗后立即進行重試,但最多重試三次。

      • 重試到下次觸發:失敗后立即進行重試,直到下次觸發時間。

      優先級

      用于識別任務的重要性,暫無其他作用。

      默認為 中等

      描述(可選)

      配置任務的描述信息,例如業務含義、影響范圍等,最多 1024 個字符。

      任務分片示例代碼

      public class ShardingSchedule implements ISimpleJobHandler {
      
          private final Logger LOGGER = LoggerFactory.getLogger(ShardingSchedule.class);
      
          private ThreadPoolExecutor threadPool;
      
          @Override
          public String getName() {
              return "SHARDING_SCHEDULE";
          }
      
          @Override
          public ClientCommonResult handle(JobExecuteContext jobExecuteContext) throws Exception {
              int sharding = jobExecuteContext.getSharding();
      
              //當前機器獲取到的分片數
              LOGGER.info("current machine sharding is " + sharding);
              //總的分片數
              System.out.println("total sharding num is " + jobExecuteContext.getShardingCount());
      
              System.out.println("activity sharding is" + jobExecuteContext.getActivitySharding());
      
              return ClientCommonResult.buildSuccessResult();
          }
      
          @Override
          public ThreadPoolExecutor getThreadPool() {
              return threadPool;
          }
      
       /**
           * Setter method for property threadPool.
           *
           * @param threadPool value to be assigned to property threadPool
           */
          public void setThreadPool(ThreadPoolExecutor threadPool) {
              this.threadPool = threadPool;
          }
      
      }

      獲取和覆蓋自定義參數示例代碼

      public class SimpleTaskDemo implements ISimpleJobHandler {
      
          @Override
          public ClientCommonResult handle(JobExecuteContext context) {
             // 根據 key 獲取 obj
              Object obj = context.getCustomParam("intObj");
      
              // 獲取自定義參數
              Map<String, Object> paramsMap = context.getCustomParams();
              context.putCustomParams("num", 2);
              List<String> listparam = newArrayList <>();
              listparam.add("aaaaaa");
              listparam.add("111111");
              context.putCustomParams("intparam", 111);
              context.putCustomParams("stringparam", "dfadsfad1243");
              context.putCustomParams("listparam", listparam);
              // 注意對象必須實現 Serializable
              context.putCustomParams("objectParam", newObject());
              return ClientCommonResult.buildSuccessResult();
          }
      
      ....
      }
    4. 單擊 提交

    5. 在任務列表中打開目標任務的 是否啟用 開關。

      如果有客戶端在線,新配置的任務自動有客戶端注冊。任務在禁用的狀態下,您也可以在操作列單擊 觸發,手動觸發一次任務。

      啟用

查看任務調度記錄

  1. 在任務列表中,單擊目標任務名稱。

  2. 單擊 調度記錄 頁簽,查看調度記錄。

    調度記錄最多保留 7 天。您可以使用頁簽上方的下拉列表篩選調度記錄類型,包括全部調度記錄、調度執行成功、調度執行失敗以及漏調度記錄。