これはSpring Batchアプリケーションで、リーダーは1度に1オブジェクトずつプロセッサに渡します。しかし、多くの(数千の)オブジェクトが読み込み/処理されることがあります。Springバッチプロセッサのランダムパーセンテージ値に基づいて処理/選択/反復する方法は?
プロセッサでは、渡されたパーセンテージに基づいてランダムに値を選択します。これは整数値(100未満)です。
このパーセント値は設定可能であり、ジョブパラメータとしてバッチアプリケーションに送信されます。 これは、任意の10%、20%、25%、30%、50%、75%などとすることができます。
たとえば、プロセッサで受信したオブジェクトのうち50%が2つしか処理されない場合は、&が処理されます(nullが返されます)。 75%の場合、プロセッサによって受信された4つのオブジェクトのうち3つが処理され、& 1は無視されます。
私は randomPercentが50%以上である場合には動作しません。この
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;
}
}
上記のコードのようなものを考えていました。
パーセンテージの値を処理してそれに基づいて反復処理を行うには、より優れた方法があります。
ありがとうございます!
。 オブジェクトの数は最小ですか? 作家は何をしていますか? –
1.最低でも数百のアイテム/オブジェクトが存在する可能性があります 2. randomPercent値に基づいて、 アイテムがプロセッサによって処理される場合はライターに送信され、ライターは通知を送信し、アイテムが処理されない場合はプロセッサが戻りますライターにはnull - 何も起こりません。 – src3369