一、引入依赖
<!--openfeign-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
<version>2.2.1.RELEASE</version>
</dependency>
这里需要注意,版本号尽量保持一致
二、配置启动类注解
@EnableFeignClients,并指定openfeign调用位置
三、设置服务调用超时时间
调用方服务,需要配置超时时间,默认时间是2s,容易出现调用失败
#openfeign超时时间设定
feign:
client:
config:
userbase-server: #服务名称
loggerLevel: BASIC #日志级别
connectTimeout: 10000 #连接超时时间,默认2s,设置单位为毫秒
readTimeout: 10000 # 请求处理超时时间,默认5s,设置单位为毫秒
四、实现openfeign类
方法名、参数类型、返回类型、请求方式,要保持一致。示例如下:
1、调用方
package com.ibaosteel.memberserver.service.openfeign;
import com.ibaosteel.memberserver.common.response.ResultDTO;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
@Component
@FeignClient(serviceId = "userbase-server") //要访问的应用名称
public interface StoreService {
@PostMapping(value = "userbaseapi/addStore") // userbaseapi服务提供者的上下文
public ResultDTO addStore(@RequestParam(value = "item") String name, @RequestParam(value = "num") String num); //
}
2、提供方
package com.ibaosteel.userbaseserver.controller;
import com.ibaosteel.userbaseserver.common.response.Msg;
import com.ibaosteel.userbaseserver.common.response.ResultDTO;
import com.ibaosteel.userbaseserver.common.response.ResultUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@Slf4j
@RestController
public class StoreController {
@PostMapping(value = "/addStore")
public ResultDTO addStore(@RequestParam("item") String item, @RequestParam("num") String num){
try{
Thread.sleep(6000);
}catch (Exception e){
}
log.info("请求过来了:"+item+","+num);
return ResultUtil.ok(Msg.SUCCESS,"");
}
}