1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        手把手教你實現(xiàn)xxl-job分布式任務(wù)調(diào)度平臺搭建

        共 3799字,需瀏覽 8分鐘

         ·

        2020-09-21 17:12

        程序員的成長之路
        互聯(lián)網(wǎng)/程序員/技術(shù)/資料共享?
        關(guān)注


        閱讀本文大概需要 4.5 分鐘。

        編輯:業(yè)余草

        推薦:https://www.xttblog.com/?p=5097

        最近有網(wǎng)友咨詢我 xxl-job 相關(guān)的問題,我認(rèn)為官方文檔已經(jīng)寫的非常詳細(xì)了,這里我再給大家寫一個入門級的 3 分鐘實戰(zhàn) demo,希望能夠幫助到更多的“新手用戶”。
        首先我們需要先下載 xxl-job 的源碼,下載地址:github:https://github.com/xuxueli/xxl-job。我這里下載使用的是 2.1.2 版本,下載完成后解壓,然后使用 IDEA 的Import Project 導(dǎo)入到 IDE 中,注意使用 Maven 方式導(dǎo)入。
        將上圖目錄下的 sql 文件放入 mysql 中執(zhí)行,執(zhí)行完成之后會生成如下 8 張表。
        然后我們需要修改 xxl-job-admin 工程下的 application.properties 配置文件。
        主要修改的就是數(shù)據(jù)庫連接屬性,需要跟上面創(chuàng)建數(shù)據(jù)庫表的數(shù)據(jù)庫連接信息一致。

        spring.datasource.url=jdbc:mysql://127.0.0.1:3306/xxl_job?Unicode=true&characterEncoding=UTF-8
        spring.datasource.username=root
        spring.datasource.password=root_pwd
        spring.datasource.driver-class-name=com.mysql.jdbc.Driver

        配置文件修改完畢之后,因為是一個 SpringBoot 項目,不需要再打成 war 包放入 tomcat 這種操作了,就可以直接啟動 xxl-job-admin 的啟動類。
        成功啟動之后,如果沒有修改 application.properties 配置文件中的端口號和路徑的話,直接打開?http://localhost:8080/xxl-job-admin?就能看到 xxl-job-admin 的監(jiān)控平臺了,默認(rèn)用戶名 admin,密碼 123456。
        到這里 xxl-job-admin 就搭建完成了,接下來我們寫一個 demo,demo 中的代碼均參考自官方網(wǎng)站?https://www.xuxueli.com/xxl-job/,有興趣的同學(xué)可以自行查閱 項目結(jié)構(gòu)如下:
        首先導(dǎo)入 pom 依賴。


        ????com.xuxueli
        ????xxl-job-core
        ????2.1.2

        同樣的需要修改配置文件 application.properties。

        #?web?port
        server.port=8081

        #?log?config
        logging.config=classpath:logback.xml

        ###?調(diào)度中心部署跟地址?[選填]:如調(diào)度中心集群部署存在多個地址則用逗號分隔。執(zhí)行器將會使用該地址進(jìn)行"執(zhí)行器心跳注冊"和"任務(wù)結(jié)果回調(diào)";為空則關(guān)閉自動注冊;
        xxl.job.admin.addresses=http://127.0.0.1:8080/xxl-job-admin
        ###?執(zhí)行器AppName [選填]:執(zhí)行器心跳注冊分組依據(jù);為空則關(guān)閉自動注冊
        xxl.job.executor.appname=xxl-job-executor-sample
        ###?執(zhí)行器IP [選填]:默認(rèn)為空表示自動獲取IP,多網(wǎng)卡時可手動設(shè)置指定IP,該IP不會綁定Host僅作為通訊實用;地址信息用于?"執(zhí)行器注冊"?和?"調(diào)度中心請求并觸發(fā)任務(wù)";
        xxl.job.executor.ip=
        ###?執(zhí)行器端口號?[選填]:小于等于0則自動獲?。荒J(rèn)端口為9999,單機(jī)部署多個執(zhí)行器時,注意要配置不同執(zhí)行器端口;
        xxl.job.executor.port=9999
        ###?執(zhí)行器通訊TOKEN [選填]:非空時啟用;
        xxl.job.accessToken=
        ###?執(zhí)行器運行日志文件存儲磁盤路徑?[選填]?:需要對該路徑擁有讀寫權(quán)限;為空則使用默認(rèn)路徑;
        xxl.job.executor.logpath=/data/applogs/xxl-job/jobhandler
        ###?執(zhí)行器日志文件保存天數(shù)?[選填]?:?過期日志自動清理, 限制值大于等于3時生效;?否則, 如-1, 關(guān)閉自動清理功能;
        xxl.job.executor.logretentiondays=30

        添加 logback.xml。


        <configuration?debug="false"?scan="true"?scanPeriod="1?seconds">
        ????<contextName>logbackcontextName>
        ????<property?name="log.path"?value="/data/applogs/xxl-job/xxl-job-executor-sample-springboot.log"/>

        ????<appender?name="console"?class="ch.qos.logback.core.ConsoleAppender">
        ????????<encoder>
        ????????????<pattern>%d{HH:mm:ss.SSS}?%contextName?[%thread]?%-5level?%logger{36}?-?%msg%npattern>
        ????????encoder>
        ????appender>

        ????<appender?name="file"?class="ch.qos.logback.core.rolling.RollingFileAppender">
        ????????<file>${log.path}file>
        ????????<rollingPolicy?class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
        ????????????<fileNamePattern>${log.path}.%d{yyyy-MM-dd}.zipfileNamePattern>
        ????????rollingPolicy>
        ????????<encoder>
        ????????????<pattern>%date?%level?[%thread]?%logger{36}?[%file?:?%line]?%msg%n
        ????????????pattern>
        ????????encoder>
        ????appender>

        ????<root?level="info">
        ????????<appender-ref?ref="console"/>
        ????????<appender-ref?ref="file"/>
        ????root>
        configuration>

        config 類。

        @Configuration
        public?class?XxlJobConfig?{
        ????private?Logger?logger?=?LoggerFactory.getLogger(XxlJobConfig.class);

        ????@Value("${xxl.job.admin.addresses}")
        ????private?String?adminAddresses;

        ????@Value("${xxl.job.executor.appname}")
        ????private?String?appName;

        ????@Value("${xxl.job.executor.ip}")
        ????private?String?ip;

        ????@Value("${xxl.job.executor.port}")
        ????private?int?port;

        ????@Value("${xxl.job.accessToken}")
        ????private?String?accessToken;

        ????@Value("${xxl.job.executor.logpath}")
        ????private?String?logPath;

        ????@Value("${xxl.job.executor.logretentiondays}")
        ????private?int?logRetentionDays;

        ????@Bean
        ????public?XxlJobSpringExecutor?xxlJobExecutor()?{
        ????????logger.info(">>>>>>>>>>>?xxl-job?config?init.");
        ????????XxlJobSpringExecutor?xxlJobSpringExecutor?=?new?XxlJobSpringExecutor();
        ????????xxlJobSpringExecutor.setAdminAddresses(adminAddresses);
        ????????xxlJobSpringExecutor.setAppName(appName);
        ????????xxlJobSpringExecutor.setIp(ip);
        ????????xxlJobSpringExecutor.setPort(port);
        ????????xxlJobSpringExecutor.setAccessToken(accessToken);
        ????????xxlJobSpringExecutor.setLogPath(logPath);
        ????????xxlJobSpringExecutor.setLogRetentionDays(logRetentionDays);

        ????????return?xxlJobSpringExecutor;
        ????}
        }

        最后是需要定時執(zhí)行的任務(wù)邏輯,在 2.1.2 版本中,由原來基于 JobHandler 類任務(wù)開發(fā)方式,優(yōu)化為支持基于方法的任務(wù)開發(fā)方式;因此,可以支持單個類中開發(fā)多個任務(wù)方法,進(jìn)行類復(fù)用。

        @Component
        public?class?DemoXxxlJob?{
        ????@XxlJob("demoJobHandler")
        ????public?ReturnT?demoJobHandler(String?param)?throws?Exception?{
        ????????XxlJobLogger.log("XXL-JOB,?Hello?World.");

        ????????for?(int?i?=?0;?i?5;?i++)?{
        ????????????XxlJobLogger.log("beat?at:"?+?i);
        ????????????TimeUnit.SECONDS.sleep(2);
        ????????}
        ????????return?ReturnT.SUCCESS;
        ????}
        }

        上面的代碼使用的是簡單任務(wù)示例(Bean 模式),還支持分片廣播任務(wù)、命令行任務(wù)、跨平臺 Http 任務(wù)、生命周期任務(wù),任務(wù)初始化與銷毀時,支持自定義相關(guān)邏輯;可根據(jù)自己的需要選擇,在源碼中的 xxl-job-executor-sample-springboot 都有相應(yīng)的示例可供參考。
        一切準(zhǔn)備就緒之后,我們就可以在 xxl-job-admin 上建立執(zhí)行器了。
        新增任務(wù)。
        選擇你的操作。
        執(zhí)行完成后可查看調(diào)度日志。
        日志詳情。
        到這里整個項目就搭建完成了,整個 demo 非常簡單。很多人就是因為沒用過 xxl-job,所以非常懼怕,等你認(rèn)真翻一遍官網(wǎng),動手再實踐一遍,最終發(fā)現(xiàn) xxl-job 是如此的簡單!
        推薦閱讀:
        Windows給力!可以扔掉Linux虛擬機(jī)了!
        22圖詳解ElasticSearch 使用教程
        2T技術(shù)資源大放送!包括但不限于:C/C++,Linux,Python,Java,PHP,人工智能,單片機(jī),樹莓派,等等。在公眾號內(nèi)回復(fù)「2048」,即可免費獲?。。?/span>

        微信掃描二維碼,關(guān)注我的公眾號

        朕已閱?

        瀏覽 61
        點贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報
        評論
        圖片
        表情
        推薦
        點贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            变态男把女内裤扒开让男人看 | 狼友视频在线 | 欧美10一11娇小XXXX | 成人福利网站在线 | 国产一级婬乱片 | 情趣视频网站在线观看 | 欧美亚洲成人网 | 日韩毛片无码视频 | 97爱爱爱 | 日韩v |