gpt4 book ai didi

java - 使用 spring boot # SOAP Service 并行调用 SOAP 服务

转载 作者:行者123 更新时间:2023-12-01 23:22:17 25 4
gpt4 key购买 nike

我目前正在使用 Spring Boot。我有一个请求对象列表(大约 1000 个),并且希望为所有对象并行调用 SOAP 服务并获取所有对象的响应。一旦处理完所有请求,我想并行执行我的程序。

有什么好的推荐吗?

public class ServiceImpl implements Service {

@Autowired
private SOAPConnector connector;

public void getEmployeeData(){
List<Request> lstRequest = [List of Objects];
List<Response> lstResponse = new ArrayList();
for(int i=0 ; i <=lstRequest.size()-1; i++)
{
lstResponse.add(connector.callEmployeeService());
}
callAnotherMethod(lstResponse);
}
}


public class SOAPConnector extends WebServiceGatewaySupport {

public Response callEmployeeService(Request request) {
try{
return (Response) getWebServiceTemplate().marshalSendAndReceive(request);
} catch (Exception e) {

}
}
}


@Configuration
public class Configurator {

@Value("${service.url}")
private String SERVICE_URL;

@Autowired
ComponentMessageSender httpComponentsMessageSender;

@Bean
public SOAPConnector getClient() {
SOAPConnector client = new SOAPConnector();
client.setMarshaller(getMarshaller());
client.setUnmarshaller(getMarshaller());
client.setDefaultUri(SERVICE_URL);

try {
client.setMessageSender(httpComponentsMessageSender.getHttpComponentsMessageSender());

} catch (Exception e){
System.out.println("error on message sender ");
}

return client;
}

private Jaxb2Marshaller getMarshaller() {
Jaxb2Marshaller marshaller = new Jaxb2Marshaller();
marshaller.setClassesToBeBound(Request.class, Response.class);
return marshaller;
}
}

最佳答案

请查看 Java 8 的 CompletableFuture。您可以按如下方式尝试:

List<Request> lstRequest = [List of Objects];
CompletableFuture[] futures = new CompletableFuture[lstRequest.size()];

for(int i=0 ; i <=lstRequest.length - 1; i++) {
futures[i] = CompletableFuture.supplyAsync(() -> connector.callEmployeeService());
}

CompletableFuture.allOf(lstResponse).thenApply((result) -> {
// This is where you get all of your responses
});

关于java - 使用 spring boot # SOAP Service 并行调用 SOAP 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58324335/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com