服务注册发现_服务发现Discovery

服务注册发现_服务发现Discovery_第1张图片

修改payment8001的Controller

/**
 * 支付控制层
 */
@Slf4j
@RestController
public class PaymentController {


  @Autowired
  private DiscoveryClient discoveryClient;


  @GetMapping("/payment/discovery")
  public Object discovery(){
    // 获取所有微服务信息
    List services = discoveryClient.getServices();
    for (String service : services) {
      log.info("server:={}",service);
     }
    return this.discoveryClient;
   }
  
}

RestTemplate介绍

RestTemplate 是从 Spring3.0 开始支持的一个 HTTP 请求工具,它提供了常见的REST请求方案的模版,例如 GET 请求、POST 请求、PUT 请求、DELETE 请求以及一些通用的请求执行方法 exchange 以及 execute。

在配置类中的restTemplate添加@LoadBalanced注解

这个注解会 给这个组件 有负载均衡的功能

@Configuration
publicclassCloudConfig{
@LoadBalanced
@Bean
publicRestTemplaterestTemplate(){
returnnewRestTemplate();
}
}

修改payment8001工程controller

@Slf4j
@RestController
@RequestMapping("/payment")
public class PaymentController {


  @GetMapping("/index")
  public String index(){
    return "payment + successs";
   }
}

编写order80工程Controller

@RestController
@RequestMapping("/order")
public class OrderController {


  //  HTTP 请求工具
  @Autowired
  private RestTemplate restTemplate;


  /**
   * 测试服务发现接口
   * @return
   */
  @GetMapping("/index")
  public String index(){
    //1.远程调用方法的主机
    //Stringhost="http://localhost:1000";
    //将远程微服务调用地址从"IP地址+端口号改成"微服务名称""
    String host = "http://cloud-payment-provider";
    // 2. 远程调用方法具体URL地址
    String url = "/payment/index";
    // 3. 发起远程调用
    //getForObject:返回响应体中数据转化成的对象,可以理解为json
    //getForEntity:返回的是ResponseEntity的对象包含了一些重要的信息
    String forObject = restTemplate.getForObject(host + url, String.class);
    return forObject;
   }
}

 

你可能感兴趣的:(服务发现,java,服务器)