使用Eureka的步骤

1.搭建Eureka Server

   1.1创建工程,导入依赖
 <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
 </dependency>
   1.2配置application.yml
server:
  port: 9000
#配置Eureka server
eureka:
  instance:
    hostname: localhost
  client:
    register-with-eureka: false #是否将自己注册到注册中心
    fetch-registry: false #是否从eureka中获取注册信息
    service-url: #配置暴露给Eureka Client的请求地址
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
   1.3 配置启动类
@SpringBootApplication
@EnableEurekaServer  //激活Eureka Server
public class EurekaServerApplication {
    public static void main(String[] args) {
        SpringApplication.run(EurekaServerApplication.class, args);
    }
}

2.将服务提供者注册到Eureka Server上

   2.1 引入Eureka Client坐标
        <!--引入Eureka Client依赖-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
   2.2 修改application.yml添加EurekaServer的信息
  #配置Eureka
eureka:
  client:
    service-url:
      defaultZone: http://localhost:9000/eureka/

  instance:
    prefer-ip-address: true #使用ip地址注册
   2.3 修改启动类,添加服务发现的支持(可选)
 */
@SpringBootApplication
@EntityScan("com.bjpowernode.product.entity")
@EnableEurekaClient   //激活Eureka Client
public class ProductApplication {

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

3.服务消费者通过注册中心获取服务列表,并调用

   3.1 引入Eureka Client依赖
        <!--引入Eureka Client依赖-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
   3,2 配置application.yml文件
#配置Eureka
eureka:
  client:
    service-url:
      defaultZone: http://localhost:9000/eureka/ #多个eurekaserver之间用,隔开
  instance:
    prefer-ip-address: true #使用ip地址注册
   3.3 修改启动类,添加服务发现的支持(可选)
   注意:需要在服务消费者方的启动类中,创建RestTemplate对象,并交给spring容器管理
@SpringBootApplication
@EntityScan("com.bjpowernode.eureka.entity")
@EnableDiscoveryClient  //激活Eureka Client
public class OrderApplication {

    /**
     * 使用spring提供的RestTemplate发送请求到商品服务
     *      1.创建RestTemplate对象交给容器管理
     *      2.在使用的时候,调用其他方法完成
     */

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


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

   3.4 在服务调用者中的Controller层,注入DiscoveryClient
    /**注入DiscoveryClient : 
    	springcloud提供的获取元数据的工具类
    		调用方法获取服务的元数据
    */
    private DiscoveryClient discoveryClient;
   3.5 调用discoveryClient方法
@Controller
@RequestMapping("/order")
public class OrderController {

    //注入RestTemplate对象
    @Autowired
    private RestTemplate restTemplate;

    //注入DiscoveryClient : springcloud提供的获取元数据的工具类,调用方法获取服务的元数据
    private DiscoveryClient discoveryClient;

    @RequestMapping("/buy/{id}")
    @ResponseBody
    public Product findById(@PathVariable Long id){

        //调用discoveryClient方法
        // 根据服务名称获取服务提供者的实例
        List<ServiceInstance> instances = discoveryClient.getInstances("service-product");

        //获取第一个元数据
        ServiceInstance instance = instances.get(0);

        //获取主机名称和端口号
        String host = instance.getHost();
        int port = instance.getPort();

        //根据主机名称和端口号进行拼接
        Product product = restTemplate.getForObject("http://"+host+":"+port+"/product/"+id, Product.class);
        return product;
    }

}

    搞定!!!!!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值