请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

使用ProductClientFallback之后的问题

使用ProductClientFallback之后的问题:
访问orderService里面的ClientController(没有使用@HystrixCommand)去调用product服务接口listForOrder,全是返回为null,这是什么问题?引用不明确码 ?是不是要使用Qualifier指明用哪个实现
import java.util.List;
@FeignClient(name = “product”,fallback = ProductClient.ProductClientFallback.class)
public interface ProductClient {
。。。。。

@Component //注意要加component注解!!!
static  class ProductClientFallback implements ProductClient{

    @Override
    public List<ProductInfoData> listForOrder(List<String> productIds) {
        return null;
    }

    @Override
    public void decreaseStock(List<DecreaseStockInput> list) {

    }
}

}
,order其他服务访问

正在回答 回答被采纳积分+3

3回答

廖师兄 2020-11-19 01:07:41

在Product的Controller里打印日志看看

0 回复 有任何疑惑可以回复我~
  • 提问者 我不想放弃 #1
    商品服务会有输出日志的,确实有查到001,002的商品,但是订单服务就一直返回我定义的  return Arrays.asList(new ProductInfoData());
    
    然后我尝试用注释 Qualifier,启动就报错了
     @Autowired()
        @Qualifier("product")
        private ProductClient mProductClient;
    回复 有任何疑惑可以回复我~ 2020-11-26 00:14:32
  • 廖师兄 回复 提问者 我不想放弃 #2
    你有下载课程源码试试吗?你先用课程源码看看行不行,如果还找不出问题的话,把你的代码提交到github。我下载帮你看看
    回复 有任何疑惑可以回复我~ 2020-11-27 13:35:10
廖师兄 2020-11-16 14:01:51
List<ProductInfoData> productInfos = mProductClient.listForOrder(Arrays.asList("001", "002"));
        log.error("Response={}",productInfos);

不对,我让你在Product里打印日志,不是order里

0 回复 有任何疑惑可以回复我~
  • 提问者 我不想放弃 #1
    这是商品服务的数据,看出来是有查到两件商品的数据
    ProductServiceImpl    : 商品皮蛋粥下,商品库存13
    ProductServiceImpl    : 商品瘦肉粥,商品库存153
    但是,order打的日志,里面返回的数据是我fallback实现的属性全是null的对象
    Response=[ProductInfoData(productId=null, productName=null, productPrice=null, productStock=null, productDescription=null, productIcon=null, productStatus=null, categoryType=null)]
    回复 有任何疑惑可以回复我~ 2020-11-17 00:29:00
廖师兄 2020-11-11 02:01:58

去调用product服务接口listForOrder,全是返回为null

你在product里打印日志,看是否真的被调用了

0 回复 有任何疑惑可以回复我~
  • 提问者 我不想放弃 #1
    2020-11-12 23:10:03.345 ERROR  c.a.order.controller.ClientController    : Response=null
    日志看出response是null的,而且单独测试商品服务是正常的?但是出现下面这个错误
    2020-11-12 23:10:07.486  WARN [order,,,] 18780 --- [/api/v2/spans}}] z.r.AsyncReporter$BoundedAsyncReporter   : Spans were dropped due to exceptions. All subsequent errors will be logged at FINE level.
    2020-11-12 23:10:07.490  WARN [order,,,] 18780 --- [/api/v2/spans}}] z.r.AsyncReporter$BoundedAsyncReporter   : Dropped 3 spans due to ResourceAccessException(I/O error on POST request for "http://localhost:9411/api/v2/spans": connect timed out; nested exception is java.net.SocketTimeoutException: connect timed out)
    
    org.springframework.web.client.ResourceAccessException: I/O error on POST request for "http://localhost:9411/api/v2/spans": connect timed out; nested exception is java.net.SocketTimeoutException: connect timed out
    	at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:748) ~[spring-web-5.2.8.RELEASE.jar:5.2.8.RELEASE]
    回复 有任何疑惑可以回复我~ 2020-11-12 23:13:38
  • 提问者 我不想放弃 #2
    product服务也有查询数据库的日志,但是打印出来就是null
    回复 有任何疑惑可以回复我~ 2020-11-12 23:19:16
  • 提问者 我不想放弃 #3
    我把fallback类返回new一个数组,只加一个new 的product
    class ProductClientFallback implements ProductClient{
    
            @Override
            public List<ProductInfoData> listForOrder(List<String> productIds) {
    
                return Arrays.asList(new ProductInfoData());
            }
    调接口运行下面方法 
     List<ProductInfoData> productInfos = mProductClient.listForOrder(Arrays.asList("001", "002"));
            log.error("Response={}",productInfos);
    日志输出Response=[ProductInfoData(productId=null, productName=null, productPrice=null, productStock=null, productDescription=null, productIcon=null, productStatus=null, categoryType=null)]
    回复 有任何疑惑可以回复我~ 2020-11-13 00:10:40
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信