gpt4 book ai didi

java - 如何使用RestTemplate实现异步Rest Web服务客户端?

转载 作者:行者123 更新时间:2023-12-01 09:40:19 24 4
gpt4 key购买 nike

我想使用 spring 3.1 Rest 模板异步调用 Rest Web 服务调用。目前我们正在使用 Resttemplate.getForObject 方法来调用其余的 Web 服务。现在,根据要求,我们必须与现有方法同时调用另一个 Web 服务方法。我们通过实例化方法类从 EJB 2.1 无状态 session bean 调用此方法。

示例代码如下:-

public class MyImplServerBean extends EJBObject{
RestServiceImpl restImpl = new RestServiceImpl();
ArrayList<User> userDetailsList = restImpl.getUserDetails(123);
}

public class RestServiceImpl {

RestTemplate template = new RestTemplate();

public ArrayList<User> getUserDetails(int userId){

ArrayList<User> userList = new ArrayList<User>();
String url = "http://localhost:7001/myUserService/userId";
User user = template.getForObject(url, User.class);
userList.add(user);
return userList;
}

我们现在需要异步调用 getUserDetails 方法。我得到了使用 @Async 注释的想法,但不知道如何准确实现。您能帮忙吗?

最佳答案

我用了this完成类似任务的教程。我做了一些修改。以下是如何让它发挥作用。

1) 创建一个配置类并确保它被ApplicationContext扫描。我使用 AnnotationConfigWebApplicationContext。

@EnableAsync
@Configuration
public class AsyncConfiguration implements AsyncConfigurer
{
@Bean(name = "threadPoolTaskExecutor")
public Executor threadPoolTaskExecutor()
{
ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
executor.setCorePoolSize(10);
return executor;
}

@Override
public Executor getAsyncExecutor()
{
return new ThreadPoolTaskExecutor();
}

@Override
public AsyncUncaughtExceptionHandler getAsyncUncaughtExceptionHandler()
{
return new CustomAsyncExceptionHandler();
}
}

2)用注释你的方法

@Async("threadPoolTaskExecutor")

您的方法必须返回 void 或 Future。

3) 确保异步方法是公共(public)的并且是从另一个类调用的。这样,当方法被反射调用时,Spring“看到”注释。

关于java - 如何使用RestTemplate实现异步Rest Web服务客户端?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38510522/

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