所以我有一个春季批处理应用程序,我已经获得了一个id列表,然后使用' read()'以获得1对多的结果。问题是,我无法控制每个id获得多少结果,这意味着我的组块充其量只是参差不齐。是否有建议的方法来避免内存/ CPU中的峰值?一个例子如下:
@Before
public void getIds() {
*getListOfIds* //Usually around 10,000 or so
}
@Override
public AccountObject read() {
if(list of ids havent all been used) {
List<AccountObject> myAccounts = myService.getAccounts(id);
return myAccounts; //This could be anywhere from 1 result to 100,000 results.
} else {
return null;
}
}
因此上面的myAccounts对象可能很小或很大。这导致分块基本上没用,因为此刻我正在按List分块。我真的很喜欢直接使用AccountObject,但是看不到一个简单的方法。
我在这里缺少课程,策略等吗?