springcloud-consumer=>集成eureka, ribbon,feign

1.pom.xml

    <dependencies>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>

        <!--添加uereka client 依赖包-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>

        <!--Actuator 开启健康检查依赖的包-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>

        <!--添加ribbon依赖,spring Retry重试依赖-->
        <dependency>
            <groupId>org.springframework.retry</groupId>
            <artifactId>spring-retry</artifactId>
        </dependency>


        <!--添加Feigin依赖-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>

        <!--添加Hystrix 依赖包-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
        </dependency>

        <!--Hystris监控依赖所需要的actuator包-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>

        <!--整合Dashboard-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-hystrix-dashboard</artifactId>
            <version>2.0.2.RELEASE</version>
        </dependency>


    </dependencies>

    <!--添加SpringCloud的依赖-->
    <dependencyManagement>

        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Finchley.SR2</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>

    </dependencyManagement>

2.启动类


@SpringCloudApplication //相当于@SpringBootApplication+@EnableDiscoveryClient+@EnableCircuitBreaker
//@SpringBootApplication// 表明是启动类
//@EnableDiscoveryClient //表明是Eurekak客户端

//开发Feigin远程调用的功能,属性basePackages 指定路径
@EnableFeignClients(basePackages = "com.tina.springcloud.springcloud.consumer7001.*")

//@EnableCircuitBreaker //开启熔断组件的功能 相当于@EnableHystrixDashboard+@EnableHystrix
//@EnableHystrixDashboard
//@EnableHystrix
public class SpringcloudConsumer7001Application {

    public static void main(String[] args) {
        SpringApplication.run(SpringcloudConsumer7001Application.class, args);
    }

}
  1. 配置文件
server:
  port: 7001

spring:
  application:
    name: eureka-consumer
eureka:
  client:
    service-url:
      defaultZone: http://tina:123456@localhost:8001/eureka/
    healthcheck:
      #开启健康检查
      enabled: true
  instance:
    #采用IP注册
    prefer-ip-address: true
    #定义实例ID的格式
    instance.id: ${spring.application.name}:${sping.cloud.client.ip.address}:${server.port}
    #自定义实例跳转链接
    status-page-url: http://tina:123456@localhost:7001/consumer/getById/{id}
    #表示eureka client 发送心跳给server端的频率
    lease-renewal-interval-in-seconds: 5
    #表示eureka client 发送心跳给server端频率超过如下设置时间,service端则移除该实例
    lease-expiration-duration-in-seconds: 5

#配置ribbon
ribbon:
  eager-load:
    # 开启饥饿加载模式
    enabled: true
    # 指定需要饥饿加载的服务名
    clients:  http://tina:123456@localhost:8001/eureka/,http://tina:123456@localhost:8002/eureka/
  # 设置ribbon 最大连接数
  MaxTotalConnections: 500
  # 设置ribbon 每个host 最大的连接数
  MaxConnectionsPerHost: 500
  #对当前实例重试的次数
  maxAutoRetries: 5
  #切换实例的重试次数
  maxAutoRetriesNextServer: 5
  #对所有的操作请求都进行重试
  okToRetryOnAllOperations: true
  #Http响应码进行重试
  retryableStatusCodes: 500,404,502
### 针对单个服务的 Ribbon 配置
eureka-provider:
  ribbon:
    # 基于配置文件形式的 针对单个服务的 Ribbon指定负载均衡策略
    NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule #随机


#配置feign中 RemoteClient设置的日志级别
logging:
  level:
    com.tina.eureka.consumer.RemoteClient: info
feign:
  hystrix:
    enabled: true #默认是不开启,设置为true 是开启熔断的功能
 #配置熔断的超时时间
  command:
    default:
      execution:
        isolation:
          thread:
            timeoutInMillisecond: 50000 # 熔断超时时长:10000ms


  1. config
@Component
public class HystrixFallBack implements FallbackFactory<UserClient> {
    private Logger logger= LoggerFactory.getLogger(HystrixFallBack.class);
    @Override
    public UserClient create(final Throwable cause) {
        logger.error("HystrixFallBack回退的原因",cause);
        return new UserClient(){
            @Override
            public String getById(String id) {
                return "fail 调用失败了!!";
            }
        };
    }
}
=======================================================
@Configuration
public class FeignConfiguration {
    @Bean
    Logger.Level feiginLoggerLevel(){
        return Logger.Level.FULL;
    }
}
=======================================================
@FeignClient(name = "eureka-provider",
        configuration = FeignConfiguration.class,
        fallbackFactory = HystrixFallBack.class
)
public interface UserClient {

    @GetMapping("/user/getById/{id}")
    String getById(@PathVariable String id);


}


@RestController
@RequestMapping(value ="/consumer")
public class UserController{

    //使用Feign远程调用
    @Autowired
    private UserClient userClient;


    @GetMapping("/getById/{id}")
    public Object getById(@PathVariable  String id){
        return  userClient.getById(id).toString();
    }


    /**
     * 利用RestTemplate调用
     * @Autowired
     *     private RestTemplate restTemplate;
     *
     *     @GetMapping(value ="/consumer/getById/{id}")
     *     public String getById(@PathVariable  String id){
     *        return restTemplate.getForObject("http://tina:123456@eureka-provider/user/getById/"+id,String.class);
     *     }
     *
     */

}

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,186评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,858评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,620评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,888评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,009评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,149评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,204评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,956评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,385评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,698评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,863评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,544评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,185评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,899评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,141评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,684评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,750评论 2 351

推荐阅读更多精彩内容