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

快速入門

更新時(shí)間:

任務(wù)調(diào)度產(chǎn)品支持多種任務(wù)類型,包括簡單任務(wù)、集群任務(wù),您可以根據(jù)業(yè)務(wù)的需求,選擇其一實(shí)現(xiàn)業(yè)務(wù)。本文以簡單任務(wù)為例,介紹如何快速完成一個(gè)簡單任務(wù)的本地開發(fā)以及控制臺(tái)任務(wù)配置等。

說明

若您需要任務(wù)調(diào)度工程示例代碼,請下載 示例工程

操作步驟

  1. 本地應(yīng)用開發(fā)。

    1. 創(chuàng)建 SOFABoot 工程。

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

      說明

      任務(wù)調(diào)度客戶端支持使用 SOFABoot 框架或其它 Maven 工程框架開發(fā)。此處以 SOFABoot 為例介紹應(yīng)用開發(fā)示例。非 SOFABoot 工程的配置,請參見 非 SOFABoot 工程。

    2. 引入任務(wù)調(diào)度的依賴。

      1. 在 SOFABoot 工程中引入任務(wù)調(diào)度的依賴:

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

        說明

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

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

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

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

    4. 實(shí)現(xiàn)處理器接口。

      客戶端提供了 ISimpleJobHandler 接口給業(yè)務(wù)方實(shí)現(xiàn),通過實(shí)現(xiàn)該接口編寫業(yè)務(wù)邏輯代碼。

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

      代碼說明:

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

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

    5. 實(shí)現(xiàn)類。

      類里必須分別實(shí)現(xiàn) handlegetThreadPoolgetName 方法。

      • handle:在該方法里執(zhí)行業(yè)務(wù)邏輯。

      • getThreadPool:獲取一個(gè)執(zhí)行該任務(wù)的線程池,如果沒有設(shè)置,會(huì)使用客戶端自帶的線程池。

      • getName:獲取這個(gè)執(zhí)行器的名字。客戶端接收到任務(wù)的觸發(fā)請求時(shí),會(huì)根據(jù)名字尋找匹配的執(zhí)行器。

        說明

        當(dāng)任務(wù)需要按多個(gè)步驟執(zhí)行時(shí),需要寫多個(gè)實(shí)現(xiàn)類,并在控制臺(tái)開啟分步。

        代碼示例如下:

        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){})
        
            /**
             * 處理業(yè)務(wù)邏輯。
             **/
            @Override
            public ClientCommonResult handle(JobExecuteContext context) throws InterruptedException{
                // 獲取自定義參數(shù)。
                Integer num =(Integer) context.getCustomParam("num");
                if(num ==null){
                    num =0;
                }
                num = num +1;
                // 更新自定義參數(shù)。
                context.putCustomParams("num",5);
                return ClientCommonResult.buildSuccessResult();
            }
        
            @Override
            public ThreadPoolExecutor getThreadPool(){
                // 建議使用自定義實(shí)現(xiàn)類。
                return executor;
            }
        
            @Override
            public String getName(){
                // handler 名字,管控頁面配置的 handler 即這部分定義內(nèi)容。
                return NAME;
            }
        }
        
    6. 配置 Spring。

      通過以下任一方式將接口實(shí)現(xiàn)類配置為 Spring Bean:

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

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

  2. 在云端發(fā)布應(yīng)用。

    本地客戶端開發(fā)完成后,您需要將其發(fā)布部署到 SOFAStack 經(jīng)典應(yīng)用服務(wù)。詳細(xì)步驟,請參見 發(fā)布部署應(yīng)用

  3. 在控制臺(tái)配置調(diào)度任務(wù)。

    1. 登錄任務(wù)調(diào)度控制臺(tái)。

    2. 在左側(cè)導(dǎo)航欄選擇 中間件 > 任務(wù)調(diào)度 > 任務(wù)配置

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

      參數(shù)

      說明

      任務(wù)名稱

      配置任務(wù)的名稱,用于識別任務(wù)。

      應(yīng)用名稱

      填寫或選擇目標(biāo)應(yīng)用名稱。

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

      調(diào)度類型

      配置任務(wù)調(diào)度的類型,可選值:

      • cron 表達(dá)式觸發(fā):該類型的任務(wù)在創(chuàng)建時(shí)需要配置 CRON 表達(dá)式定時(shí)觸發(fā)任務(wù)。

      • 事件觸發(fā):該類型的任務(wù)通過外部事件觸發(fā)任務(wù)。

      • 定時(shí)觸發(fā):該類型的任務(wù)在創(chuàng)建時(shí)也需要配置 CRON 表達(dá)式定時(shí)觸發(fā),并且只能執(zhí)行一次。

      Cron 表達(dá)式

      配置 CRON 表達(dá)式,用于定時(shí)觸發(fā)任務(wù)。配置方式請參見 CRON 表達(dá)式詳解

      僅在 調(diào)度類型cron 表達(dá)式觸發(fā) 時(shí)配置。

      任務(wù)分組(可選)

      選擇或新建一個(gè)任務(wù)分組,方便歸納管理任務(wù)。

      執(zhí)行器名字

      必須與代碼中任務(wù)處理器名字一致,即 實(shí)現(xiàn)類 步驟中 getName 方法獲取的執(zhí)行器名字。

      是否分片

      選擇任務(wù)是否開啟分片:

      • 不開啟分片,任務(wù)將只調(diào)度到一臺(tái)客戶端服務(wù)器上執(zhí)行。

      • 開啟分片,并設(shè)置分片數(shù)為 N,任務(wù)則會(huì)同時(shí)觸發(fā)到 N 臺(tái)客戶端服務(wù)器上并發(fā)執(zhí)行。

        如果您開啟了分片,您還需在本地工程編碼實(shí)現(xiàn)任務(wù)分片。代碼參見下文 任務(wù)分片示例代碼

      自定義參數(shù)(可選)

      自定義參數(shù)支持從控制臺(tái)向任務(wù)傳遞參數(shù),參數(shù)也可以在任務(wù)間傳遞,格式為:key=value

      參數(shù)配置說明如下:

      • 參數(shù)名:設(shè)置自定義參數(shù)的名稱。

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

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

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

        • LIST:支持字符串?dāng)?shù)組,例如:["aaa","bbb"]

        • BOOLEAN:支持 true 或 false。

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

          • ${sharding}:替換當(dāng)前分片值,配合簡單任務(wù)使用。

          • ${shardingCount}:替換簡單任務(wù)配置的分片數(shù)。

          • ${triggerTime}:替換預(yù)期的觸發(fā)時(shí)間。

      說明

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

      路由策略

      選擇執(zhí)行任務(wù)的路由策略,可選值:

      • 隨機(jī):每次執(zhí)行都隨機(jī)分發(fā)到客戶端服務(wù)器上。

      • 定向:每次執(zhí)行都分發(fā)到同一個(gè)客戶端服務(wù)器上。

        暫不支持指定客戶端服務(wù)器 IP。

      • 輪詢:每次執(zhí)行依次分發(fā)到每臺(tái)客戶端服務(wù)器上。

      通信方式

      選擇任務(wù)的通信方式,可選值:

      • 單向 ONEWAY:單向操作,沒有返回值。控制臺(tái)不記錄觸發(fā)記錄、無超時(shí)、無重試。

        高頻非重要任務(wù)時(shí)建議使用。

      • 回調(diào) CALLBACK:雙向操作,有返回值。控制臺(tái)可查看觸發(fā)記錄、可設(shè)置超時(shí)、可重試。

        重要任務(wù)時(shí)建議使用,觸發(fā)間隔至少 5 分鐘。

      任務(wù)互斥

      選擇是否開啟任務(wù)互斥模式。開啟任務(wù)互斥模式時(shí),處在“執(zhí)行中”或“暫停”狀態(tài)的任務(wù)即使已經(jīng)達(dá)到下一個(gè)任務(wù)觸發(fā)時(shí)間點(diǎn),仍無法再次觸發(fā)。本次調(diào)度狀態(tài)以“跳過”標(biāo)記。默認(rèn)為不開啟。

      僅當(dāng) 通信方式 設(shè)置為 回調(diào) CALLBACK 時(shí)配置。

      漏觸發(fā)策略

      設(shè)置任務(wù)漏觸發(fā)時(shí)的處理策略,可選值:

      • 忽略:不進(jìn)行補(bǔ)償處理。

      • 立即觸發(fā):立即重新觸發(fā)。

      • 時(shí)間充裕時(shí)觸發(fā):是否進(jìn)行補(bǔ)償觸發(fā)取決于下次觸發(fā)前的剩余時(shí)間是否充裕。若當(dāng)前時(shí)間 + 超時(shí)時(shí)間 < 下次觸發(fā)時(shí)間,則進(jìn)行補(bǔ)償觸發(fā),并將此次補(bǔ)償觸發(fā)插入觸發(fā)記錄;反之,則不觸發(fā)。多次漏觸發(fā)進(jìn)行恢復(fù)時(shí)僅進(jìn)行一次補(bǔ)償觸發(fā)。

      僅當(dāng) 通信方式 設(shè)置為 回調(diào) CALLBACK,且 調(diào)度類型 cron 表達(dá)式觸發(fā) 時(shí),可配置此項(xiàng)。

      超時(shí)策略

      設(shè)置任務(wù)執(zhí)行超時(shí)后的處理策略,可選值:

      • 不處理:觸發(fā)記錄和執(zhí)行記錄狀態(tài)均標(biāo)記為失敗。

      • 按失敗策略重試:本次調(diào)度記錄狀態(tài)標(biāo)為失敗,并按照 失敗處理策略 進(jìn)行失敗重試。重試后本次調(diào)度記錄將被重置為重試結(jié)果。

      • 停止后續(xù)觸發(fā):執(zhí)行記錄狀態(tài)為失敗,觸發(fā)記錄狀態(tài)為超時(shí),并且無法再次觸發(fā)。僅當(dāng)開啟任務(wù)互斥模式時(shí)可選擇此項(xiàng)。

      僅當(dāng) 通信方式 設(shè)置為 回調(diào) CALLBACK 時(shí)配置。

      超時(shí)時(shí)間

      設(shè)置任務(wù)執(zhí)行的超時(shí)時(shí)間,當(dāng)任務(wù)超過此時(shí)間未回調(diào)則認(rèn)為執(zhí)行失敗。單位可選擇為 分鐘小時(shí)

      僅當(dāng) 通信方式 設(shè)置為 回調(diào) CALLBACK 時(shí)配置。

      失敗處理策略

      設(shè)置任務(wù)執(zhí)行失敗后的處理策略,可選值:

      • 不重試:失敗后不進(jìn)行重試。

      • 最多重試三次:失敗后立即進(jìn)行重試,但最多重試三次。

      • 重試到下次觸發(fā):失敗后立即進(jìn)行重試,直到下次觸發(fā)時(shí)間。

      優(yōu)先級

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

      默認(rèn)為 中等

      描述(可選)

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

      任務(wù)分片示例代碼

      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();
      
              //當(dāng)前機(jī)器獲取到的分片數(shù)
              LOGGER.info("current machine sharding is " + sharding);
              //總的分片數(shù)
              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;
          }
      
      }

      獲取和覆蓋自定義參數(shù)示例代碼

      public class SimpleTaskDemo implements ISimpleJobHandler {
      
          @Override
          public ClientCommonResult handle(JobExecuteContext context) {
             // 根據(jù) key 獲取 obj
              Object obj = context.getCustomParam("intObj");
      
              // 獲取自定義參數(shù)
              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);
              // 注意對象必須實(shí)現(xiàn) Serializable
              context.putCustomParams("objectParam", newObject());
              return ClientCommonResult.buildSuccessResult();
          }
      
      ....
      }
    4. 單擊 提交

    5. 在任務(wù)列表中打開目標(biāo)任務(wù)的 是否啟用 開關(guān)。

      如果有客戶端在線,新配置的任務(wù)自動(dòng)有客戶端注冊。任務(wù)在禁用的狀態(tài)下,您也可以在操作列單擊 觸發(fā),手動(dòng)觸發(fā)一次任務(wù)。

      啟用

查看任務(wù)調(diào)度記錄

  1. 在任務(wù)列表中,單擊目標(biāo)任務(wù)名稱。

  2. 單擊 調(diào)度記錄 頁簽,查看調(diào)度記錄。

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