zoukankan      html  css  js  c++  java
  • spring cloud Eureka client配置(consumer通过Eureka发起对provider的调用)

    参考:http://www.ityouknow.com/springcloud/2017/05/12/eureka-provider-constomer.html

    springboot版本:2.0.3.RELEASE

    首先配置一个Erureka server,这里为了方便我们可以使用单机版并启动服务,参考上一篇文章《spring cloud Eureka server配置

    provider配置

    pom.xml

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    <!-- 引入客户端 --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency>
      <!-- 非必须,监控用 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies>

    application.yml

    spring:
      application:
        name: spring-cloud-provider
    server:
      port: 8080
    eureka:
      client:
        service-url:
          defaultZone: http://localhost:8765/eureka
    # spring boot信息,可选配置
    info:
      app:
        name: spring-cloud-provider-wly
        version: 1.0.0

    启动类(添加@EnableDiscoveryClient注解,用于注册到Eureka)

    package com.wang.eurekaprovider;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
    
    @SpringBootApplication
    @EnableDiscoveryClient
    public class EurekaproviderApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(EurekaproviderApplication.class, args);
        }
    }

    controller

    package com.wang.eurekaprovider.controller;
    
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    /**
     * @Author wly
     * @Date 2018/6/27 16:15
     */
    @RestController
    @RequestMapping("/a")
    public class HelloController {
        @RequestMapping("/b")
        public String hello(String name) {
            return "Hello World!" + name;
        }
    }

    启动服务并访问

    http://localhost:8080/a/b?name=sb

    页面展示(chrome浏览器)

    Hello World!sb

    consumer配置

    pom.xml

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
      <!-- 引入客户端 --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency>
      <!-- 引入feign -->
    <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> </dependency>
      <!-- 非必须,监控用 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies>

    application.yml

    spring:
      application:
        name: spring-cloud-consumer
    server:
      port: 8081
    eureka:
      client:
        service-url:
          defaultZone: http://localhost:8765/eureka
    # spring boot信息,可选配置
    info:
      app:
        name: spring-cloud-consumer-wly
        version: 1.0.0

    启动类(添加@EnableDiscoveryClient、@EnableFeignClients注解)

    package com.wang.eurekaconsumer;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
    import org.springframework.cloud.openfeign.EnableFeignClients;
    
    @SpringBootApplication
    @EnableDiscoveryClient
    @EnableFeignClients
    public class EurekaconsumerApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(EurekaconsumerApplication.class, args);
        }
    }

    调用接口定义

    package com.wang.eurekaconsumer.remote;
    
    import org.springframework.cloud.openfeign.FeignClient;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestParam;
    
    /**
     * @FeignClient.name对应provider的spring.appliation.name
     * @RequestMapping要和想调用的服务一致,方法名随意,参数名要一致(猜测是用Rest方式调用)
     * @Author wly
     * @Date 2018/6/27 17:08
     */
    @FeignClient(name="spring-cloud-provider")
    public interface HelloRemote {
        @RequestMapping("/a/b")
        public String hahaha(@RequestParam("name")String qqq);
    }

    controller

    package com.wang.eurekaconsumer.controller;
    
    import com.wang.eurekaconsumer.remote.HelloRemote;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    /**
     * @Description
     * @Author wly
     * @Date 2018/6/27 17:16
     */
    @RestController
    @RequestMapping("/a")
    public class HelloController {
        @Autowired
        private HelloRemote helloRemote;
    
        @RequestMapping("/c")
        public String hello(String name) {
            return helloRemote.hahaha(name);
        }
    }

    启动服务并访问

    http://localhost:8081/a/c?name=sb

    页面展示(chrome浏览器)

    Hello World!sb

    调用结果和provider一致!

    查看Eureka页面(发现服务成功注册)

    正常流程:启动服务后应该先看监控注服务是否注册成功~

    补充

    如果使用不同端口启动多个provider,它会自动的进行负载均衡,有兴趣的同学可以尝试一下。

    贴两张provider的图

    下面是我同时启动两个provider,通过consumer访问后,provider的控制台效果

  • 相关阅读:
    牛客网分糖果
    【bzoj3717】[PA2014]Pakowanie 状压dp
    【bzoj1042】[HAOI2008]硬币购物 背包dp+容斥原理
    [POI2007]堆积木Klo
    【bzoj5018】[Snoi2017]英雄联盟 背包dp
    BZOJ 1492 [NOI2007]
    bzoj 2741 [FOTILE模拟赛] L
    bzoj 1486 最小圈
    计数
    cf 700
  • 原文地址:https://www.cnblogs.com/douJiangYouTiao888/p/9237728.html
Copyright © 2011-2022 走看看