0
這是Spring Batch應用程序,讀者一次將1個對象傳遞給處理器。然而,可能會有很多(數千個)對象被讀取/處理。如何在Spring批處理器中基於隨機百分比值處理/選擇/迭代?
在處理器中,只能根據傳入的百分比(整數值(小於100))隨機選擇值。
此百分比值可配置並作爲作業參數發送到批處理應用程序。 它可以是任何10%,20%,25%,30%,50%,75%等等。
舉個例子,如果它的50%,那麼處理器收到的2個對象中只有1個會被處理&另一個會被忽略(返回null)。 如果它是75%,那麼處理器收到的4個對象中的3個將被處理& 1將被忽略。
我在想這樣的事情
int current = 0;
public <T> process(<T> item) {
JobParameters parameters = stepExecution.getJobParameters();
int randomPercent = parameters.getString("percentage");
// randomPercent = 50;
int num = 100/randomPercent;
// num = 100/50 = 2
if(current % n == 0) {
// process this object
current++;
return item;
} else {
// do not process this
current++;
return null;
}
}
上面的代碼情況下 randomPercent是大於50%不工作。
有沒有更好的/優雅的方式來處理百分比值和基於它的迭代。
謝謝!
我有2個問題。 你有最小數量的對象嗎? 作者做什麼? –
1.至少可能有幾百個項目/對象 2.基於randomPercent值, 如果項目由處理器處理,則將其發送到寫入器,寫入器發送通知,如果項目未處理,則處理器返回寫給作者 - 沒有任何反應。 – src3369