XXL JOB任務分片

2021-10-04 21:32:23 字數 3246 閱讀 4180

背景

假設有k個地市,每個地市有x個訂單執行,總共kx個訂單,而每個訂單中又有乙個字段體現出地市資訊。

@component

@slf4j

public

class

ahordersxxljob);

singlemachinemultitasks.

put(city, tasks);}

);}}

現使用xxljob進行分片任務執行,有兩種解決思路。

自定義業務規則,配置多個xxl任務,來實現分片功能。

配置多個任務

每個任務指定不同的引數,但使用相同的jobhanlder:

jobhandler實現

@xxljob

(value =

"singlemachinemultitasks"

, init =

"init"

, destroy =

"destroy"

)public returnt

singlemachinemultitasks

(string cities)

throws exception

arrays.

stream

(cities.

split

(","))

.map

(string:

:trim)

.filter

(stringutils:

:isnotblank)

.map

(integer:

:parseint)

.foreach

(latnid -

>

】執行【{}】,任務內容為:{}"

, thread.

currentthread()

.getname()

, latnid, task);}

);})

;});

return returnt.success;

}

執行結果分別啟動兩個任務,檢視執行日誌:

分兩個執行緒,分別執行各自的任務清單;

採用多機器取模的方式,來為不同的機器指定各自服務的城市列表。

一致性hash ?

啟動多個執行管理器例項

xxl執行管理器

配置多例項分片任務

jobhandler實現

@xxljob

(value =

"multimachinemultitasks"

, init =

"init"

, destroy =

"destroy"

)public returnt

multimachinemultitasks

(string params)

throws exception 】執行【{}】,任務內容為:{}"

, i, city, task);}

);})

;}})

;return returnt.success;

}

執行結果

如果不顯示的指明生命週期函式,在方法執行完之後,會被銷毀。

如果執行器管理某乙個例項掛掉了? 如何保證那一部分資料不會丟失,不會重複消費?

XXL JOB分片排程

分布式定時任務,其實主要為是為了解決下面的幾個問題 1 單節點不安全問題 2 多節點,重複執行的問題 3 任務排程的問題 所以在路由策略上不管選擇什麼基本上都是單節點執行,除非節點掛了,其他的節點才會喚起。但是xxl job提供了一種比較有意思的路由策略,分片路由 我的理解啊,這個應該是解決資料分片...

分布式任務排程平台xxl job

分布式定時器配置 xxl job enable true 是否啟用 accesstoken job admin 配置的token admin addresses 排程中心位址 executor ip 執行器日誌儲存天數 選填 值大於3時生效,啟用執行器log檔案定期清理功能,否則不生效 logret...

xxl job之實現流程任務編排思路

某一天一如既往的上班 旅途 中,我的領導在開早會的時候,說我最近沒啥事,於是讓我研究一下activiti工作流引擎與drools規則引擎,當時也不知道後邊具體要做什麼,管它的,先看看再說。看了幾天後,寫了個簡單的demo出來,結果發現activiti這個東西不就是可以用來做流程審批的嘛 最後我們就開...