springcloud服務之間的調用-feign


需求:訂單里調用用戶服務,在訂單里查詢出用戶信息

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);


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM