Feign 调用微服务应用的api
微服务应用介绍
每个微服务是整个系统的一小块分值,整体应用按照水平,或者垂直划分应用,每个微服务独立,职责专一,微服务之间通过暴露出来的接口进行通信,这里将介绍如何通过feign调用接口,实现通信。
引入maven依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-openfeign-core</artifactId>
<version>2.2.2.RELEASE</version>
<scope>compile</scope>
</dependency>
编写service以及facFallbackFactory
FallbackFactory意思就是调用微服务接口失败将会执行的一个方法
@FeignClient(value = "boss-bes-basedata-center",fallback = GetBaseDataServiceFallbackFactory.class)
public interface GetBaseDataService {
@PostMapping(value="/education/bes/v1/basedata-center/api/getSubjectTypes",
consumes = MediaType.APPLICATION_JSON_VALUE)
CommonResponse getSubjectTypes(@RequestBody CommonRequest<SubjectTypeListConditionDTO> request);
}
/**
* @Description 熔断类
*/
@Component
public class GetBaseDataServiceFallbackFactory implements GetBaseDataService {
@Override
public CommonResponse getSubjectTypes(CommonRequest<SubjectTypeListConditionDTO> request) {
return CommonResponse.error(BusinessErrorCode.EXAM_CENTER_BASE_DATA_GET_SUBJECT_TYPE_LIST_ERROR);
}
}
启动类需要配置扫描类和开启服务
@EnableFeignClients(clients = {GetPaperCenterDataService.class, GetSystemDataService.class, GetBaseDataService.class})
调用
public CommonResponse doGetSubjectTypeList(@RequestBody @Valid CommonRequest<String> commonRequest){
SubjectTypeListConditionDTO dto = new SubjectTypeListConditionDTO();
dto.setOrgId(Long.valueOf(commonRequest.getBody()));
CommonRequest<SubjectTypeListConditionDTO> request = new CommonRequest<>();
request.setHeader(commonRequest.getHeader());
request.setBody(dto);
return getBaseDataService.getSubjectTypes(request);
}
效果展示
# The ending