SpringCloud 通过EnableFeignClients调用其他服务的api

/ 默认分类 / 0 条评论 / 140浏览

在springboot的main处加上注解@EnableFeignClients

@EnableFeignClients
@SpringBootApplication
@MapperScan(basePackages = "com.company.project.dao")
public class StrategyApplication {
    public static void main(String[] args) {
        SpringApplication.run(StrategyApplication.class, args);
    }
}

在service上定义实现接口

这里注意value可以用serviceId代替,但是最好用value来指定要调用的服务 fallback是当程序错误的时候来回调的方法 方法中要用@PathVariable要注解参数

import com.company.project.service.impl.MUDATAFeignClientFallback;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
/**
 * FeignClient
 * @author FENG
 * @date 2019-10-25
 */
@FeignClient(value = "mudata-v1", fallback = MUDATAFeignClientFallback.class)
public interface MUDATAFeignClient {
    /**
     * 调用服务-通过条件查询会员
     * @author FENG
     * @date 2019-10-25
     * @param condition  1-累计消费金额查询 ;2-累计消费次数查询;3-累计消费升数查询
     * @param enterpriseId 总站id
     * @param startTime 订单开始时间
     * @param endTime 订单结束时间
     * @param symbol 条件 >,>= ,<,<=
     * @return Object
     */
    @RequestMapping(value = "/inward/user/list", method = RequestMethod.GET)
    public Object queryUserByParam(@RequestParam("condition") String condition,
                                   @RequestParam("enterpriseId") String enterpriseId,
                                   @RequestParam("startTime") String startTime,
                                   @RequestParam("endTime") String endTime,
                                   @RequestParam("symbol") String symbol,
                                   @RequestParam("value") String value);
}

添加程序错误时的回调类,实现接口,在错误时回调

/**
 * FeignClientFallback
 * @author FENG
 * @date 2019-10-25
 */
@Service
public class MUDATAFeignClientFallback implements MUDATAFeignClient {
    @Override
    public Object queryUserByParam(String condition ,
                                   String enterpriseId ,
                                   String startTime,
                                   String endTime,String symbol ,
                                   String value) {
        return null;
    }
}

imp中调用该服务

 @Autowired
    private MUDATAFeignClient mUDATAFeignClient;

   try {
               // Object obj = mUDATAFeignClient.queryUserByParam("1", "100082", "2019-01-01", "2019-12-01", ">", "1");
                Object obj = mUDATAFeignClient.queryUserByParam(
                        "1",
                        param.get("merch_no"),
                        param.get("pay_timefrom"),
                        param.get("pay_timeto"),
                        param.get("symbol"),
                        param.get("paramvalue"));
                String test = "";
            } catch (Exception e) {
                return null;
            }