package camelinaction;
import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;
@Service
public class RatingService {
private static final Logger LOG = LoggerFactory.getLogger(RatingService.class);
// use rest template to call external REST service
private final RestTemplate restTemplate = new RestTemplate();
@HystrixCommand(fallbackMethod = "fallbackRating")
public RatingDto[] rating(String ratingsUrl, String itemIds) {
LOG.info("Calling rating service {}", ratingsUrl);
return restTemplate.getForObject(ratingsUrl, RatingDto[].class, itemIds);
}
public RatingDto[] fallbackRating(String ratingsUrl, String itemIds) {
String[] ids = itemIds.split(",");
RatingDto[] dtos = new RatingDto[ids.length];
for (int i = 0; i < ids.length; i++) {
String id = ids[i];
RatingDto dto = new RatingDto();
dto.setItemNo(Integer.valueOf(id));
dto.setRating(6);
dtos[i] = dto;
}
return dtos;
}
}