需求:订单里调用用户服务,在订单里查询出用户信息
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);