SpringCloud-搭建Eureka注册中心

很多小伙伴用springboot 整合eureka的时候遇到各种问题,其中这些问题大多数都是版本不兼容的问题。
下边列举一下SpringCloud 的版本以及SpringCloud和SpringBoot 版本的一个对应的情况

Spring Cloud版本

SpringCloud-搭建Eureka注册中心_第1张图片
image.png

Spring Cloud与Spring Boot版本匹配关系

SpringCloud-搭建Eureka注册中心_第2张图片
image.png

搭建Eureka环境

使用版本说明:
spring boot 2.0.x
spring cloud Finchley.RELEASE
jdk 1.8
maven 3.3.9

yml配置

server:
  port: 9000
eureka:
  instance:
    hostname: localhost
  client:
    registerWithEureka: false
    fetchRegistry: false
    serviceUrl:
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
spring:
  application:
    name: eureka-service

启动

/**
* @author sjx
*/
@SpringBootApplication
@EnableEurekaServer
public class EurekaApplication {
  public static void main(String[] args) {
      SpringApplication.run(EurekaApplication.class, args);
  }
}

访问 :http://localhost:9000/
出现下面的图则说明你的eureka环境已经成功搭建完成

SpringCloud-搭建Eureka注册中心_第3张图片
image.png

案例

实现案例订单服务调用会员服务查询用户信息


SpringCloud-搭建Eureka注册中心_第4张图片
服务注册与发现.png

服务提供者

创建一个服务提供者 会员服务工程 (eurekaMember),提供会员查询服务信息
创建项目service-member

yml配置

server:
  port: 9001
eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:9000/eureka/
spring:
  application:
    name: service-member

pom.xml配置

配置同Eureka相同

新建MemberController

/**
 * @author: sjx
 * @description: 提供会员服务
 */
@RestController
public class MemberController {
    @GetMapping("/getUserList")
    public List getUserList() {
        List listUser = new ArrayList<>();
        listUser.add("张三");
        listUser.add("李四");
        listUser.add("王五");
        return listUser;
    }
}

启动项目之后再Eureka注册中心中可以发现会员服务已经注册进来了


SpringCloud-搭建Eureka注册中心_第5张图片
image.png

构建消费服务sercice-order

yml配置

server:
  port: 9002
eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:9000/eureka/
spring:
  application:
    name: service-order

这里服务调用用rest

service

public interface OrderService {
     List getOrderByUserList();
}
###serviceImpl
/**
 * @author: sjx
 * @description:
 */
@Service
public class OrderServiceImpl implements OrderService {
    @Autowired
    private RestTemplate restTemplate;

    @Override
    public List getOrderByUserList() {
        return restTemplate.getForObject("http://service-member/getUserList", List.class);
    }
}

controller

/**
 * @author: sjx
 * @description: 订单服务
 */
@RestController
public class OrderController {
    @Autowired
    private OrderService orderService;

    @GetMapping(value = "/getAllMemberUsers")
    public List getAllMemberUsers() {
        return orderService.getOrderByUserList();
    }
}

启动服务这时会出现一个错误如下
Field restTemplate in com.springcloud.order.service.impl.OrderServiceImpl required a bean of type 'org.springframework.web.client.RestTemplate' that could not be found.
在启动类上加上如下代码

@SpringBootApplication
@EnableEurekaClient
public class DemoApplication {
    /**
     * 在工程的启动类中,通过@EnableDiscoveryClient向服务中心注册;
     * 并且向程序的ioc注入一个bean: restTemplate;并通过@LoadBalanced
     * 注解表明这个RestTemplate开启负载均衡的功能
     * @return RestTemplate 
     */
    @Bean
    @LoadBalanced
    RestTemplate restTemplate() {
        return new RestTemplate();
    }
    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }
}

订单服务已经注册进来了


SpringCloud-搭建Eureka注册中心_第6张图片
image.png

测试

SpringCloud-搭建Eureka注册中心_第7张图片
image.png

通过订单服务成功查询到了所有的会员信息。

你可能感兴趣的:(SpringCloud-搭建Eureka注册中心)