需求:訂單里調用用戶服務,在訂單里查詢出用戶信息
order-service和user-service
1.user-service正常提供controller接口
/**根據用戶id查詢用戶信息 * @param * @return */ @RequestMapping(value = "/{id}",method= RequestMethod.GET) @ApiOperation(value = "根據用戶id查詢用戶信息", notes = "根據用戶id查詢用戶信息") public ResponseData getUserInfo(@PathVariable("id") Long id,@RequestParam("userType") int userType) { return ResponseDataUtil.buildSuccess("200","查詢成功",userService.getUserInfoById(id,userType)); }
2.user-service里的application,啟用feign客戶端
@EnableDiscoveryClient @SpringBootApplication @EnableFeignClients @ComponentScan("com.****") public class TmsUserApplication { public static void main(String[] args) { SpringApplication.run(TmsUserApplication.class, args); } }
3.order-service里寫一個api接口,和user-service里的controller方法定義一樣
/** * 用戶信息 * @description * @author guo * @date 2019-10-31 */ @FeignClient(value = "user-service",configuration = FeignConfiguration.class)//此處configuration為了服務直接傳遞header,user-service是用戶服務名稱 public interface UserService { /** * 查詢用戶信息 * @param * @return */ @RequestMapping(value = "/api/1/user/users/{id}",method= RequestMethod.GET) public Map<String,Object> getUserInfoById(@PathVariable("id") Long id, @RequestParam("userType") int userType); }
4.order-service里的業務方法,直接引用(負載均衡feign處理:
# feign和ribbon結合,指定策略。feign默認的是輪詢的策略,這里的配置可以自定義user-service
:
ribbon:
NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule)
@Autowired private UserService userService;userService.getUserInfoById(1,1);