elastic-job詳解(五):自定義任務參數


elastic-job詳解(三):Job的手動觸發功能一文中講到了如何手動觸發一個Job,但是我們手動觸發的時候常常需要輸入一些參數。舉個栗子:我們有個日統計報表,每天凌晨統計一次,統計上一天的數據。但我們發現幾天前的某一天的數據有問題,需要重跑統計。這就需要統計程序能執行指定某一天的數據。這個功能就可以使用自定義任務參數來輕松實現。自定義參數,可通過傳遞該參數為作業調度的業務方法傳參,用於實現帶參數的作業。例:每次獲取的數據量、作業實例從數據庫讀取的主鍵、執行某一天的任務等。

 

1. 支持自定義參數的代碼

要使用自定義參數,就必須要在你實現的任務中使用這個參數,下面我們來看一下具體實現的代碼:

public class MySimpleJob implements SimpleJob
{
    Logger logger = LoggerFactory.getLogger("MyShardingJob1");
    
    @Override
    public void execute(ShardingContext shardingContext)
    {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
        String date;
        String param = shardingContext.getJobParameter();

        date = param.isEmpty() ? sdf.format(new Date()) : param;
        doWork(date);
    }

    private void doWork(String date)
    {
        logger.info("Doing work.");
    }
}

真正和業務處理方法doWork接收一個日期參數,如果自定義參數沒有則按照常規使用當前時間來進行統計,如果通過手動觸發給定了參數,則使用給定的參數來做任務。自定義參數是根據shardingContext.getJobParameter()來獲取。

 

2. 觸發自定義參數

代碼層面支持之后,我們來看一下怎么觸發。首先找到console管理界面,連上正在執行的任務,點擊“修改”按鈕。

image

進入任務修改界面,在自定義參數一欄添加參數,然后點擊更新。

image

 

最后,在圖1中點擊觸發按鈕。帶參數的任務就會被觸發。千萬不要忘記執行成功之后再次修改回來,避免每次執行都會使用這個自定義參數。

 

elastic-job內部是在zookeeper中修改任務config節點中”jobParameter”的數據。

image

 

 

 

 

 

 

架構點滴


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM