Eureka

image.png

Eureka的相关配置特性-server(Eureka的Provider的application.yml解析):

server:
  port: 8001

eureka:
  instance:
    hostname: localhost # 主机名
    prefer-ip-address: true # 将当前实例的ip注册到eureka server 中。默认是false 注册主机名
    ip-address: 127.0.0.1 # 设置当前实例的ip
    instance-id: ${eureka.instance.ip-address}:${spring.application.name}:${server.port} # 设置web控制台显示的 实例id
    lease-renewal-interval-in-seconds: 3 # 每隔3 秒发一次心跳包
    lease-expiration-duration-in-seconds: 9 # 如果9秒没有发心跳包,服务器呀,你把我干掉吧~
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka # eureka服务端地址,将来客户端使用该地址和eureka进行通信
spring:
  application:
    name: eureka-provider # 设置当前应用的名称。将来会在eureka中Application显示。将来需要使用该名称来获取路径

举个例子:

假如服务提供方已给出,注册到Eureka中,如图:
image.png
那服务的调用方OrderController.class整体写法:

@RestController

@RequestMapping("/order")

public class OrderController {

@Autowired

private RestTemplate restTemplate;

@Autowired

private DiscoveryClient discoveryClient;

@GetMapping("/goods/{id}")

public Goods findGoodsById(@PathVariable("id")int id){

System.out.println("findGoodsById..."+id);

/*

            //远程调用Goods服务中的findOne接口

            使用RestTemplate

            1. 定义Bean  restTemplate

            2. 注入Bean

            3. 调用方法

*/

/* 动态从Eureka Server 中获取 provider 的 ip 和端口           

     1. 注入 DiscoveryClient 对象.激活          

      2. 调用方法*/

        //演示discoveryClient 使用:
        //假设提供方在Eureka的注册名字为:“EUREKA-PROVIDER”

        List instances = discoveryClient.getInstances("EUREKA-PROVIDER");

       //判断集合是否有数据

        if(instances ==null || instances.size() ==0){

         //集合没有数据

            return null;

}

ServiceInstance instance = instances.get(0);

String host = instance.getHost();//获取ip

        int port = instance.getPort();//获取端口

        System.out.println(host);

System.out.println(port);

String url ="http://"+host+":"+port+"/goods/findOne/"+id;

// 3. 调用方法

        Goods goods = restTemplate.getForObject(url, Goods.class);

          return goods;

    }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值