spring cloud 服务的发现与消费

springCloud workingTime 77℃ 0评论

通过前几篇文章的介绍,我相信大家对spring cloud的服务注册和发现机制有了一个大致的了解,那么这篇文章呢,我们就来说一下如何消费Eureka中的服务。

准备工作

  • 点击这里,将文章中的注册中心cloud-eureka-center和服务spring-boot-server两个项目运行起来。

  • 创建一个spring boot项目(这里我起名为:spring-boot-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-ribbon</artifactId>
            <version>1.4.4.RELEASE</version>
        </dependency>
        <!-- eureka 注册中心-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-eureka</artifactId>
            <version>1.4.4.RELEASE</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                        <!-- 主类存放位置 -->
                    <mainClass>org.consumer.Application</mainClass>
                </configuration>
            </plugin>
        </plugins>
    </build>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Edgware.SR3</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

application.properties配置


spring.application.name=ribbon-consumer
server.port=9000
eureka.client.service-url.defaultZone=http://localhost:1111/eureka/

项目中创建org.consumer包,在包中新建spring-boot主类Application.java

/**
 * @author : R&M www.rmworking.com/blog
 */
@EnableDiscoveryClient
@SpringBootApplication
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(org.springcore.Application.class , args);
    }

    @Bean
    @LoadBalanced
    RestTemplate restTemplate(){
        return new RestTemplate();
    }
}

通过@EnableDiscoveryClient注解让该应用注册为Eureka客户端应用,以获得服务发现的能力。同时,在该主类中的创建RestTemplate的Spring Bean实例,并通过@LoadBalanced注解开启客户端负载均衡。

开始对服务进行进行消费。在controllerservice包中创建实体类,进行服务的消费。


/**
 * @author : R&M www.rmworking.com/blog
 */
@RestController
public class ConsumerController {

    @Autowired
    private ConsumerService consumerService;

    @RequestMapping(value = "/ribbon-consumer" , method = RequestMethod.GET)
    public String helloConsumer(){
        System.out.println("开始访问服务!");
        return consumerService.helloService();
    }
}
/**
 * @author : R&M www.rmworking.com/blog
 *         
 */
@Service
public class ConsumerService {

    @Autowired
    private RestTemplate restTemplate;

    public String helloService(){
        return restTemplate.getForEntity("http://hello-server/hello" , String.class).getBody();
    }

    
}

发起请求

转载请注明:R&M » spring cloud 服务的发现与消费

喜欢 (0)or分享 (0)
发表我的评论
取消评论

表情

联系我:rm@rmworking.com