需求:訂單里調用用戶服務,在訂單里查詢出用戶信息
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);
