1.首先确定是不是在同一注册中心。
2.确实微服务名唯一,不然可能会调到其他微服务中,导致错误。
3.引入二个包 RestTemplate 和 DiscoveryClient 。
4.通过获取注册提供的ip和端口进行调用。
5.示例
get请求
@GetMapping("/test1")
public Map consul() {
List list = discoveryClient.getInstances(微服务名);
ServiceInstance serviceInstance = list.get(0);
String host = serviceInstance.getHost(); 微服务地址
int port = serviceInstance.getPort();端口
//指定请求地址为提供者,这里相当于网址和端口动态获取,但是后缀还是约定好的
Map map= restTemplate.getForObject(“http://” + host + “:” + port + “/api/test/test/3”, Map.class).getBody;
return map;
}
post请求
@PostMapping("/test1")
public Map consul(@ResquestBody Test test) {
List list = discoveryClient.getInstances(微服务名);
ServiceInstance serviceInstance = list.get(0);
String host = serviceInstance.getHost(); 微服务地址
int port = serviceInstance.getPort();端口
JSONOBJECT jsonObeject=new JSONOBJECT ();
jsonObeject.put(“test”,test);
//指定请求地址为提供者,这里相当于网址和端口动态获取,但是后缀还是约定好的
Map map= restTemplate.postForObject(“http://” + host + “:” + port + “/api/test/test”, jsonObeject,Map.class).getBody;
return map;
}
微服务之间调用(consul)
最新推荐文章于 2024-06-06 10:02:02 发布