SpringCloud系列(六)——SpringCloud集成Ribbon

上篇SpringCloud系列(五)——Ribbon实现简单说明了ribbon的实现方法,现在继续Springcloud集成Ribbon。

首先在 SpringCloud系列(二)——Eureka简介三个项目上进行改变。

Server端保持不变。

Provider端通过端口号输入在Eureka服务器上注册两个服务实例:

@SpringBootApplication
@EnableEurekaClient
public class ProviderApp {

    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        String port = scan.nextLine();
        new SpringApplicationBuilder(ProviderApp.class).properties("server.port=" + port).run(args);
    }

}

Invoker端:

  • 把上一篇的MyRule类拿到过,忘记说ribbon人的maven坐标:
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-ribbon</artifactId>
        </dependency>
  • 通过@Bean注入MyRule
public class MyConfig {

    @Bean
    public IRule getRule(){
        return new MyRule();
    }

}
  • 配置RibbonClient,Spring-lb-provider为服务名称,跟Provider端的名称一样:
//@RibbonClient(name = "Spring-lb-provider",configuration = MyConfig.class)
public class MyClient {

}
  • 另外还可以在配置文件 application.yml进行RibbonClient配置:
Spring-lb-provider:
  ribbon:
    NFLoadBalancerRuleClassName: org.haiyu.cloud.MyRule
  • 通过@Autowired注入LoadBalancerClient ,并在Controller类前添加@Configuration:
    @Autowired
    private LoadBalancerClient client;

    @RequestMapping(value = "/lb", method = RequestMethod.GET, 
            produces = MediaType.APPLICATION_JSON_VALUE)
    public ServiceInstance lb(){
        ServiceInstance si = client.choose("Spring-lb-provider");
        return si;
    }

猜你喜欢

转载自blog.csdn.net/qq_26641781/article/details/79942877