Eureka注册的服务之间调用不需要指定服务地址,而是通过服务名向注册中心咨询,并获取所有服务实例清单(缓存到本地),然后实现服务的请求访问。
Ribbon(默认集成)
//tencent是在Eureka中注册的服务名,"meetings/modify"是具体的接口地址
ResponseEntity<ResponseResult> response = myRestTemplate.postForEntity("http://tencent/meetings/modify", req, ResponseResult.class);
Feign(需要引入依赖)
- 引入依赖:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
- 服务启动类添加@EnableFeignClients注解
@SpringBootApplication
@EnableJpaAuditing
@EnableDiscoveryClient
@EnableAsync
@EnableEncryptableProperties
@EnableFeignClients
public class MicroMeetingApplication {
public static void main(String[] args) {
SpringApplication.run(MicroMeetingApplication.class, args);
}
}
- 添加一个接口,并在接口上添加@FeignClient(name=“tencent”)注解
@FeignClient(name="tencent")
public interface TencentClients {
@GetMapping("/meetings/modify")
Object modifyMeeting(@RequestBody Meeting meeting);
}
- 使用
@Autowired
TencentClients tencentClient;
public void test(){
Object response = tencnetClient.modifyMeeting(new Meeting());
}