Develop consumer with AsyncRestTemplate
Concepts
AsyncRestTemplate allows users to make asynchronous service calls. The logic is similar to restTemplate, except that the service is called asynchronously.
Sample code
The AsyncRestTemplate instance is created and retrieved via new CseAsyncRestTemplate()
, which is then used to make service calls through a custom URL.
- Spring MVC client sample code
@Component
public class SpringmvcConsumerMain {
private static final Logger LOG = LoggerFactory.getLogger(SpringmvcConsumerMain.class);
public static void main(String[] args) throws Exception {
init();
Person person = new Person();
person.setName("ServiceComb/Java Chassis");
//AsyncRestTemplate Consumer
CseAsyncRestTemplate cseAsyncRestTemplate = new CseAsyncRestTemplate();
ListenableFuture<ResponseEntity<String>> responseEntityListenableFuture = cseAsyncRestTemplate
.postForEntity("cse://springmvc/springmvchello/sayhi?name=Java Chassis", null, String.class);
ResponseEntity<String> responseEntity = responseEntityListenableFuture.get();
System.out.println("AsyncRestTemplate Consumer sayHi services: " + responseEntity.getBody());
HttpEntity<Person> entity = new HttpEntity<>(person);
ListenableFuture<ResponseEntity<String>> listenableFuture = cseAsyncRestTemplate
.exchange("cse://springmvc/springmvchello/sayhello", HttpMethod.POST, entity, String.class);
// ResponseEntity<String> responseEntity1 = listenableFuture.get();
// System.out.println("AsyncRestTemplate Consumer sayHello services: " + responseEntity1.getBody());
// Set the callback function
listenableFuture.addCallback(
new ListenableFutureCallback<ResponseEntity<String>>() {
@Override
public void onFailure(Throwable ex) {
LOG.error("AsyncResTemplate Consumer catched exception when sayHello, ", ex);
}
@Override
public void onSuccess(ResponseEntity<String> result) {
System.out.println("AsyncRestTemplate Consumer sayHello services: " + result.getBody());
}
});
}
public static void init() throws Exception {
Log4jUtils.init();
BeanUtils.init();
}
}
Note
- The URL format is the same with RestTemplate, refer to restTemplate for details
- The custom ListenableFuture class is the placeholder to get the results from the remote call. Users can also customize the callback function to process the return results in batches.