materialReader 타임아웃 발생 - qsp.master-material-batch pagesize 로 배치변경

This commit is contained in:
ysCha 2026-02-05 10:59:42 +09:00
parent 73c341a395
commit d0283ad453

View File

@ -4,8 +4,11 @@ import com.fasterxml.jackson.core.type.TypeReference;
import com.interplug.qcast.biz.displayItem.DisplayItemService;
import com.interplug.qcast.biz.displayItem.dto.ItemSyncResponse;
import com.interplug.qcast.util.InterfaceQsp;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.springframework.batch.core.Job;
import org.springframework.batch.core.JobExecutionListener;
import org.springframework.batch.core.Step;
@ -34,6 +37,9 @@ public class MaterialConfiguration implements JobExecutionListener {
@Value("${qsp.master-material-batch-url}")
private String qspInterfaceUrl;
@Value("${qsp.master-material-batch-page-size:1000}")
private int pageSize;
public MaterialConfiguration(DisplayItemService displayItemService, InterfaceQsp interfaceQsp) {
this.displayItemService = displayItemService;
this.interfaceQsp = interfaceQsp;
@ -58,12 +64,32 @@ public class MaterialConfiguration implements JobExecutionListener {
@Bean
@StepScope
public ListItemReader<ItemSyncResponse> materialReader() throws Exception {
this.itemSyncList =
List<ItemSyncResponse> aggregated = new ArrayList<>();
int page = 1;
while (true) {
Map<String, Object> params = new HashMap<>();
params.put("allYn", "N");
params.put("page", page);
params.put("size", pageSize);
List<ItemSyncResponse> pageItems =
interfaceQsp.callApiData(
HttpMethod.GET,
qspInterfaceUrl + "?allYn=N",
null,
qspInterfaceUrl,
params,
new TypeReference<List<ItemSyncResponse>>() {});
if (pageItems == null || pageItems.isEmpty()) {
break;
}
aggregated.addAll(pageItems);
if (pageItems.size() < pageSize) {
break;
}
page++;
}
this.itemSyncList = aggregated;
return (itemSyncList != null)
? new ListItemReader<>(itemSyncList)
: new ListItemReader<>(Collections.emptyList());