笔记:Eureka客户端发现服务

项目基佬网址:https://github.com/woshiyinweijian/SpringCloudTest

上个小小例子记录了服务的注册,现在搞服务的发现。

新建一个项目:eureka-consumer(普通springboot项目)

application.yml配置如下:

spring:
  application:
    name: eureka-consumer

server:
    port: 8082

eureka:
  instance:
    hostname: 127.0.0.1
  client:
    serviceUrl:
      defaultZone: http://127.0.0.1:8080/eureka/ # 服务的发现网址

启动类:EurekaConsumerApplication.java

package cn.ywj.eurekaconsumer;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

@SpringBootApplication
public class EurekaConsumerApplication {

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

新建一个类:ConfigApp.java

package cn.ywj.eurekaconsumer;

import org.springframework.beans.factory.annotation.Configurable;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;

@Configuration
public class ConfigApp {

    @Bean

@LoadBalanced// 负载均衡作用
    public RestTemplate getRestTemplate () {
        return new RestTemplate() ;
    }
}

其中@Configuration注解作用相当于一个application.xml,@Bean注解作用相当于application.xml中的<bean>的作用,这就注入了一个RestTemplate bean.

创建一个Controller:TestController.java

package cn.ywj.eurekaconsumer;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;

@RestController
public class TestController {

    @Autowired
    RestTemplate restTemplate;

    @RequestMapping("/test")
    public Object test(){
        return restTemplate.getForObject("http://127.0.0.1:8081/test", String.class);// 请求eureka-provider
    }
}

结合前几个篇笔记,按顺序启动:eureka\eureka-provider\eureka-consumer

访问:http://127.0.0.1:8082/test  即可返回结果 “0”(provide项目里设置的), 不过这个样子Eureka没有什么意义,此时把
return restTemplate.getForObject("http://127.0.0.1:8081/test", String.class);

换成:

return restTemplate.getForObject("http://eureka-provider/test", String.class);,这时一样可以访问返回结果“0”, url中的eureka-provider是从哪里来的,是从euraka项目启动时,访问这个eureka项目里获取的,如下图红色部分:

这样子就可以直接通过eureka进行服务的注册和发现了。

OK,停笔休息。

猜你喜欢

转载自blog.csdn.net/u013845177/article/details/82809503