微服务之间Feign调用

avatar
作者
猴君
阅读量:0

需使用的服务

@FeignClient(name = "rdss-back-service", fallback = SysUserServiceFallback.class, configuration =         FeignConfiguration.class) public interface SysUserService {      /**      * 订单下单用户模糊查询      */     @GetMapping(value = "/user/getOrderUserName")     List<SysUserVo> getOrderUserName(@RequestParam(value = "username", required = false) String username);    } 
@Slf4j @Service public class SysUserServiceFallback implements SysUserService {      @Override     public List<SysUserVo> getOrderUserName(String username) {         log.error("调用getOrderUserName方法异常,参数:{}", username);         return null;     } } 
package com.rdss.common.config;  import com.rdss.common.constants.CommonConstants; import feign.Body; import feign.RequestInterceptor; import feign.RequestTemplate; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.context.annotation.Configuration; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes;  import javax.servlet.http.HttpServletRequest; import java.util.Enumeration;  @Configuration public class FeignConfiguration implements RequestInterceptor {     private final Logger logger = LoggerFactory.getLogger(getClass());      @Override     public void apply(RequestTemplate template) {         if(template==null)return;         ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder                 .getRequestAttributes();         if(attributes==null){             template.header("ticket", CommonConstants.INNER_FEIGN_TRANS_TICKET);             return;         }         HttpServletRequest request = attributes.getRequest();         if(request==null){             return;         }         Enumeration<String> headerNames = request.getHeaderNames();         if (headerNames != null) {             while (headerNames.hasMoreElements()) {                 String name = headerNames.nextElement();                 String values = request.getHeader(name);                 //使用body,请求头的content-length与body不一致,所以会出现too many bytes written executing错误,跳过它即可                 /*if(name.equals("content-length")){                     continue;                 }*/                 template.header(name, values);              }         }         Enumeration<String> bodyNames = request.getParameterNames();         if (bodyNames != null) {             while (bodyNames.hasMoreElements()) {                 String name = bodyNames.nextElement();                 String values = request.getParameter(name);                 template.header(name, values);             }         }     } } 

另外一个微服务中

 @ApiOperation(value = "订单下单用户模糊查询", notes = "订单下单用户模糊查询", httpMethod = "GET")     @GetMapping(value="/getOrderUserName")     public List<SysUserVo> getOrderUserName(@RequestParam(value ="username", required = false) String username){         return sysUserService.getOrderUserName(username);     } 

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!