将对外暴露服务单独写在一个模块中
<groupId>com.alan</groupId>
<artifactId>commons</artifactId>
<version>1.0.0</version>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
</dependencies>
编写远程调用类
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
@FeignClient(name = "producer")
public interface FeignClientService
{
@GetMapping("v1/producer/get_username")
String getName();
}
将common模块添加到消费者依赖中
<dependency>
<groupId>com.alan</groupId>
<artifactId>commons</artifactId>
<version>1.0.0</version>
</dependency>
消费者服务启动类添加注解@EnableFeignClients
@EnableFeignClients
@SpringBootApplication
public class ConsumerServer
{
public static void main(String[] args) {
SpringApplication.run(ConsumerServer.class);
}
@Bean
@LoadBalanced
public RestTemplate restTemplate(RestTemplateBuilder builder) {
return builder.build();
}
@Bean
public NacosRule nacosRule(){
return new NacosRule();
}
}
Consumer通过Feign远程条用Producer提供服务。Feign简化了Ribbon包含的有负载均衡能力
@Autowired
private FeignClientService feignClientService;
@GetMapping("feign")
public String testFeign(){
String name = feignClientService.getName();
return name+" feign";
}
Feign超时时间设置,默认设置对所有服务生效。也可以单独对某个服务设置
feign.client.config.default.read-timeout=1
feign.client.config.default.connect-timeout=1
feign.client.config.29-nacos-discovery-provider.read-timeout=1