[Spring cloud 一步步实现广告系统] 10. 使用Ribbon 实现微服务调用
在使用Ribbon调用广告投放系统API之前,我们需要先创建2个VO对象,AdPlanVO
,AdPlanGetRequestVO
.
//数据请求对象@Data@NoArgsConstructor@AllArgsConstructorpublic class AdPlanGetRequestVO { private Long userId; private List<Long> planIds;}----------------------------------//API请求响应结果反序列化对象@Data@AllArgsConstructor@NoArgsConstructorpublic class AdPlanVO { private Long planId; private Long userId; private String planName; private Integer planStatus; private Date startDate; private Date endDate; private Date createTime; private Date updateTime;}
在AdSearchApplication
启动类中,添加RestTemplate
客户端。
public class AdSearchApplication { ... /** * 注册{@link RestTemplate}Bean * @return */ @Bean @LoadBalanced //让RestTemplate在调用服务的时候,可以实现负载均衡 RestTemplate restTemplate(){ return new RestTemplate(); }}
创建一个controller,来测试调用广告提供系统的API
/** * SearchController for search information controller * * @author <a href="mailto:magicianisaac@gmail.com">Isaac.Zhang | 若初</a> */@RestController@Slf4j@RequestMapping(path = "/search")public class SearchController { //注入RestTemplate private final RestTemplate restTemplate; @Autowired public SearchController(RestTemplate restTemplate) { this.restTemplate = restTemplate; } @GetMapping(path = "/plan/get-ribbon") public CommonResponse<List<AdPlanVO>> getAdPlansUseRibbon(@RequestBody AdPlanGetRequestVO requestVO) { log.info("ad-search::getAdPlansUseRibbon -> {}", JSON.toJSONString(requestVO)); return restTemplate.postForEntity( "http://mscx-ad-sponsor/ad-sponsor/plan/get", requestVO, CommonResponse.class ).getBody(); } @GetMapping(path = "/user/get") public CommonResponse getUsers(@Param(value = "username") String username) { log.info("ad-search::getUsers -> {}", JSON.toJSONString(username)); CommonResponse commonResponse = restTemplate.getForObject( "http://mscx-ad-sponsor/ad-sponsor/user/get?username={username}", CommonResponse.class, username ); return commonResponse; }}
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。