背景
假設有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這個東西不就是可以用來做流程審批的嘛 最後我們就開...