springboot-cloud-2-ribbon

来源:互联网 发布:java常量命名规范 编辑:程序博客网 时间:2024/06/02 22:01
    github地址:https://github.com/github-ygy/spring_cloud_test.git

ribbon-consumer

    依据springboot-cloud-2-eureka 快速启动ribbon消费     前提:     eureka-server : 注册中心分片1(也是提供者),注册自己的helloworld服务     eureka-server-slave:注册中心分片2(也是服务提供者),注册自己的helloworld服务     eureka-client  : 服务提供者,注册自己的getClient服务

pom

<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">    <modelVersion>4.0.0</modelVersion>    <groupId>test.ygy</groupId>    <artifactId>ribbon-consumer</artifactId>    <version>0.0.1-SNAPSHOT</version>    <packaging>jar</packaging>    <name>ribbon-consumer</name>    <description>Demo project for Spring Boot</description>    <parent>        <groupId>org.springframework.boot</groupId>        <artifactId>spring-boot-starter-parent</artifactId>        <version>1.5.6.RELEASE</version>        <relativePath/> <!-- lookup parent from repository -->    </parent>    <properties>        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>        <java.version>1.8</java.version>        <spring-cloud.version>Dalston.SR2</spring-cloud.version>    </properties>    <dependencies>        <dependency>            <groupId>org.springframework.cloud</groupId>            <artifactId>spring-cloud-starter-ribbon</artifactId>        </dependency>        <dependency>            <groupId>org.springframework.cloud</groupId>            <artifactId>spring-cloud-starter-eureka-server</artifactId>        </dependency>        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-web</artifactId>        </dependency>        <dependency>            <groupId>org.projectlombok</groupId>            <artifactId>lombok</artifactId>            <optional>true</optional>        </dependency>        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-test</artifactId>            <scope>test</scope>        </dependency>    </dependencies>    <dependencyManagement>        <dependencies>            <dependency>                <groupId>org.springframework.cloud</groupId>                <artifactId>spring-cloud-dependencies</artifactId>                <version>${spring-cloud.version}</version>                <type>pom</type>                <scope>import</scope>            </dependency>        </dependencies>    </dependencyManagement>    <build>        <plugins>            <plugin>                <groupId>org.springframework.boot</groupId>                <artifactId>spring-boot-maven-plugin</artifactId>            </plugin>        </plugins>    </build></project>

appliction.properties

#####defaultZone 为 eureka分片其中之1的地址spring.application.name=ribbon-consumerserver.port= 8001eureka.client.serviceUrl.defaultZone=http://pear1:9998/eureka

Application

@SpringBootApplication@EnableDiscoveryClientpublic class RibbonConsumerApplication {    @Bean    @LoadBalanced     //负载均衡    public RestTemplate restTemplate() {        return new RestTemplate();    }    public static void main(String[] args) {        SpringApplication.run(RibbonConsumerApplication.class, args);    }}

controller

/** * Created by guoyao on 2017/8/8. */@RestControllerpublic class ConsumerController {    @Autowired    private RestTemplate restTemplate ;    @RequestMapping("/consumerServer")    public String consumerServer() {         //此方法为eureka—server , eureka-server-slave 提供        return  restTemplate.getForEntity("http://SERVER/helloworld?key=ygy",String.class).getBody();    }    @RequestMapping("/consumerClient")    public String consumerClient() {         //此方法为eureka—client提供        return  restTemplate.getForEntity("http://client/getClient?key=client",String.class).getBody();    }}

输出

//localhost:8001/// 调用consumerServer 2次,consumerClient一次eureka—serverthis is server master ! eureka—server-salve:  this is server slave !eureka-clientthis is eureka client server 

自定义ribbon负载

/** * Created by guoyao on 2017/8/10. */@Configuration    // 包目录必须在@ComponentScan扫描不到的目录public class CustomerRibbonConfig {    @Bean    public IRule ribbonRule() {        return new RandomRule();    }}

application

@SpringBootApplication@RibbonClient(name = "client",configuration =CustomerRibbonConfig.class)@EnableDiscoveryClientpublic class RibbonConsumerApplication {    @Bean    @LoadBalanced     //负载均衡    public RestTemplate restTemplate() {        return new RestTemplate();    }    public static void main(String[] args) {        SpringApplication.run(RibbonConsumerApplication.class, args);    }}
原创粉丝点击