资讯专栏INFORMATION COLUMN

[Spring cloud 一步步实现广告系统] 10. 使用Ribbon 实现微服务调用

junbaor / 1747人阅读

摘要:在使用调用广告投放系统之前,我们需要先创建个对象,数据请求对象请求响应结果反序列化对象在启动类中,添加客户端。注册让在调用服务的时候,可以实现负载均衡创建一个,来测试调用广告提供系统的若初注入

在使用Ribbon调用广告投放系统API之前,我们需要先创建2个VO对象,AdPlanVO,AdPlanGetRequestVO.

//数据请求对象
@Data
@NoArgsConstructor
@AllArgsConstructor
public class AdPlanGetRequestVO {
    private Long userId;
    private List planIds;
}

----------------------------------
 
//API请求响应结果反序列化对象
@Data
@AllArgsConstructor
@NoArgsConstructor
public 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 Isaac.Zhang | 若初
 */
@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> 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;
    }
}

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/75717.html

相关文章

  • [Spring cloud 步步实现广告系统] 11. 使用Feign实现服务调用

    摘要:上一节我们使用了基于进行微服务的调用,的调用比较简单,通过组件对请求的服务进行拦截,通过获取到服务实例的然后再去调用。为了代码的重用性,我们来创建一个新的作为的服务调用工具。 上一节我们使用了Ribbon(基于Http/Tcp)进行微服务的调用,Ribbon的调用比较简单,通过Ribbon组件对请求的服务进行拦截,通过Eureka Server 获取到服务实例的IP:Port,然后再去...

    Forest10 评论0 收藏0
  • [Spring cloud 步步实现广告系统] 7. 中期总结回顾

    摘要:在前面的过程中,我们创建了个服务发现我们使用作为服务发现组件,学习了的使用。加依赖加注解改配置使用项目三部曲,我们可以快速添加一个新组件,并正常使用这个我没有在项目中实现,但是大家可以和一样,三部曲搞定。 在前面的过程中,我们创建了4个project: 服务发现 我们使用Eureka 作为服务发现组件,学习了Eureka Server,Eureka Client的使用。 Eureka...

    cnsworder 评论0 收藏0
  • [Spring cloud 步步实现广告系统] 8. 检索系统配置&依赖

    摘要:工作流程项目依赖监控面板引入服务调用的组件依赖引入服务消费者的依赖数据库链接依赖工具类集合类操作日志监听解析开源工具类库中的配置相关依赖图片压缩 工作流程 showImg(https://i.loli.net/2019/07/29/5d3ee1829df4d57461.png); 项目依赖 org.springframewo...

    dailybird 评论0 收藏0
  • 2021 年最新基于 Spring Cloud服务架构分析

    摘要:是一个相对比较新的微服务框架,年才推出的版本虽然时间最短但是相比等框架提供的全套的分布式系统解决方案。提供线程池不同的服务走不同的线程池,实现了不同服务调用的隔离,避免了服务器雪崩的问题。通过互相注册的方式来进行消息同步和保证高可用。 Spring Cloud 是一个相对比较新的微服务框架,...

    cikenerd 评论0 收藏0
  • 拜托!面试请不要再问我Spring Cloud底层原理!

    摘要:不过大多数讲解还停留在对功能使用的层面,其底层的很多原理,很多人可能并不知晓。每个线程池里的线程就仅仅用于请求那个服务。 欢迎关注微信公众号:石杉的架构笔记(id:shishan100) 每日更新!精品技术文章准时送上! 目录 一、业务场景介绍 二、Spring Cloud核心组件:Eureka 三、Spring Cloud核心组件:Feign 四、Spring Cloud核心组件:R...

    wums 评论0 收藏0

发表评论

0条评论

junbaor

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<