1.首先配置子產品的pom檔案,引入openFeign
<dependencies>
<!--openfeign-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
<!--eureka-client 已經內建了ribbon複雜均衡-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<!--熱部署-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
2.配置application.yml檔案
server:
port: 80
eureka:
client:
#true表示将自己注冊進eureka server
register-with-eureka: false
#true預設值,從eureka server抓取已有的注冊資訊,單節點無所謂,叢集必須設定為true才能配合ribbon使用負載均衡
fetch-registry: true
service-url:
#defaultZone: http://localhost:7001/eureka/
defaultZone: http://eureka7001.com:7001/eureka,http://eureka7002.com:7002/eureka,http://eureka7003.com:7003/eureka
#配置主機名稱
instance:
instance-id: consumerfeignorder80
prefer-ip-address: true
3.主啟動類,必須使用@EnableFeignClients注解,激活feign
@SpringBootApplication
@EnableFeignClients//使用feign并開啟激活
public class ConsumerFeignOrderMain {
public static void main(String[] args) {
SpringApplication.run(ConsumerFeignOrderMain.class,args);
}
}
4.建立一個service接口
openFeign是基于接口調用微服務的,是以在業務接口添加注解@FeignClient并制定微服務的名稱,以此來實作負載均衡調用
@ComponentScan
@FeignClient(value = "CLOUD-PAYMENT-SERVICE")
public interface PaymentFeignService {
@GetMapping("/payment/get/{id}")
CommonResult<Payment> getPaymentById(@PathVariable("id") Long id);
}
5.建立controller調用service
@RestController
@Slf4j
public class OrderFeignController {
@Resource
private PaymentFeignService paymentFeignService;
@GetMapping("/consumer/payment/get/{id}")
public CommonResult<Payment> getPaymentById(@PathVariable("id") Long id){
return paymentFeignService.getPaymentById(id);
}
}
基于openfeign的負載均衡就搭建好了