xxl-rpc remoting request fail, http HttpStatus[302] invalid

初次體驗 分佈式任務調度平臺 xxl-job ,參考官網
詳細的介紹 ,相信你也可以快速地在項目裏整合起來。

廢話不多說,在我啓動執行器的項目的時候,竟然啓動失敗了, 直接po上我遇到的問題:
在這裏插入圖片描述

一開始看着控制檯的錯誤日誌,一直以爲是請求 http://127.0.0.1:8080/xxl-job-admin/api 由於沒有xxl-job-admin的成功登錄,被攔截並重定向了login 頁面,我還傻傻的去改了 xxl-job-admin 下的 攔截器代碼,再重啓 xxl -job -admin ,還是報同樣的錯誤 。

後來又繼續糾結 那個 9999端口,記得在執行器的項目的application.properties 裏配置了個9999
在這裏插入圖片描述
查了下 , 只有在XxlJobConfig.java 配置類裏看到了引用,百思不得其解, 錯哪了呢?
在這裏插入圖片描述

解決思路
xxl-job 的開發者不是已經提供了很多sample的嘛。好好看,仔細看看,

在這裏插入圖片描述

咦,sample裏怎麼用的是@XxlJob 來聲明每個任務呢,我還在使用@JobHandler。好吧,明顯我的版本比sample裏的舊嘛。
在這裏插入圖片描述
查了下sample的引用的xxl-job-core版本

<version>2.2.1-SNAPSHOT</version>

但是要注意的是,這裏很明顯 ,2.2.1-SNAPSHOT 是一個本地的jar 包,因爲我把源碼全部下載下來了。這三個項目都是本地引用的。
在這裏插入圖片描述

最終解決辦法
參考sample , 升級xxl-job的版本 ,沒商量了,因爲百度了很久,也沒發現哪個網友提出瞭解決方法,應該是我自己的版本引用的不對吧。畢竟我的xxl-job-admin 也就是管理模塊 也是直接取當時碼雲上源碼的最新代碼。

主要步驟:

  • pom 文件重新導入。參考當時maven repository 官網找到和 2.2.1-SNAPSHOT 版本接近的 ,那就是 2.2.0 了。
    在這裏插入圖片描述
  • XxlJobConfig.java 文件 直接從 sample裏粘貼過來
@Configuration
public class XxlJobConfig {
   private Logger logger = LoggerFactory.getLogger(XxlJobConfig.class);

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

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

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

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

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

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

   @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.setAddress(address);
       xxlJobSpringExecutor.setIp(ip);
       xxlJobSpringExecutor.setPort(port);
       xxlJobSpringExecutor.setAccessToken(accessToken);
       xxlJobSpringExecutor.setLogPath(logPath);
       xxlJobSpringExecutor.setLogRetentionDays(logRetentionDays);

       return xxlJobSpringExecutor;
   }
}
  • 任務類從@JobHandler 轉成 @XxlJob 的寫法
//新版本
@Component
@Slf4j
public class DemoJobHandler {

    @XxlJob(value = "demoJobHandler")
    public ReturnT<String> execute(String s) throws Exception {
        System.out.println("=====hello world=====");
        return ReturnT.SUCCESS;
    }
}


//舊版本
@JobHandler(value = "demoJobHandler")
@Component
@Slf4j
public class DemoJobHandler extends IJobHandler {

    @Override
    public ReturnT<String> execute(String s) throws Exception {
        System.out.println("=====hello world=====");
        return ReturnT.SUCCESS;
    }
}

啓動成功後的日誌:
在這裏插入圖片描述

最終教訓
多看官方文檔,多看官方提供的案例,注意下版本版本版本統一!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章