美文网首页SpringCloud极简入门手册
SpringCloud极简入门(三)服务提供者与消费者

SpringCloud极简入门(三)服务提供者与消费者

作者: 叩丁狼教育 | 来源:发表于2018-04-24 11:00 被阅读206次

    作者:陈刚,叩丁狼高级讲师。原创文章,转载请注明出处。

    需求:构建消费者和提供者两个服务,实现消费者和提供者之间的通信

    一.服务提供者

    改造我们的项目Producer,让成为服务提供者:在该项目中创建ProvideController ,定义方法如下

    @RestController //@Controller 和 @ResponseBody 的混合注解
    public class ProvideController {
    
        @RequestMapping("/provide")
        public String provide(@RequestParam(value = "name")String name){
            return name+":你好呀这里是Producer服务";
        }
    }
    

    二.服务消费者

    1.创建SpringBoot项目Consumer,创建过程和Producer一致

    2.在主程序类上打上@EnableEurekaClient标签,并且定义bean: RestTemplate ,RestTemplate是Spring封装的一个http请求工具

    @SpringBootApplication
    @EnableEurekaClient
    public class ConsumerApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(Consumer1Application.class, args);
        }
    
        //RestTemplate是spring内置的REST规范的http请求封装
        @Bean
        RestTemplate restTemplate() {
            return new RestTemplate();
        }
    }
    

    3.定义ConsummerController ,注入RestTemplate实例,实现和Producer服务的通信

    @RestController
    public class ConsumerController {
    
        //注入http请求工具 restTemplate
        @Autowired
        private RestTemplate restTemplate;
    
        @RequestMapping("/consumer")
        public String consumer(@RequestParam("name") String name){
            //执行http请求Producer服务的provide映射地址,返回的数据为字符串类型
            //PRODUCER:提供者(Producer服务)的注册服务ID
            //provide :消费方法
            String result = restTemplate.getForObject("http://PRODUCER/provide?name="+name,String.class);
            return result;
        }
    }
    
    

    4.Consumer项目配置:application.yml

    eureka:
      client:
        serviceUrl:
          defaultZone: http://localhost:1111/eureka/  #注册中心服务地址
    server:
      port: 3333  #当前服务端口
    spring:
      application:
        name: consumer    #当前服务ID
    

    5.访问测试:依次启动EurekaServer ,Producer,Consumer ,浏览器输入 http://localhost:3333/consumer?name=zs 返回结果:"zs:你好呀这里是Producer服务",现在的请求流程是:

    image.png

    访问 http://localhost:1111/ 你将会看到提供者和消费者服务都已经注册:

    image.png
    WechatIMG7.jpeg

    相关文章

      网友评论

      • E丶Tok_build1709:这里服务器的调用时使用了Ribbon的调用机制,RestTemplateBean上要加上注解@LoadBalanced才能这样调用。
      • 90後小玩家:文中那个resttemplate bean少了个标签吧,不能用服务名调用服务,只能用ip+端口
        E丶Tok_build1709:确实是少了一个注解,还好你发现了这个坑
      • 0a1fd350024c:都是入门级别的,作用不大,已经公司架构上线一套微服务,需要提供技术支持的请@我
        叩丁狼教育:@if哥 这套文章目前主要是提供给同学参考入门的。这位童鞋空了也可以写几篇深入的参考参考。

      本文标题:SpringCloud极简入门(三)服务提供者与消费者

      本文链接:https://www.haomeiwen.com/subject/jlwdlftx.html