Feign使用中对于Get请求自动变成Push引发的 Sharding value null must implements Comparable 报错的解决方法

Feign使用中对于Get请求自动变成Push引发的 Sharding value null must implements Comparable 报错的解决方法

今天在做短链接系统的前后端联调,在前端查询短链接数据的时候发现了问题;

  • 在拉取短链接回收站和短链接分组中短链接数据时出现了异常,拉不到数据。回到后台日志中查看,发现是不支持Post方法

对于短链接回收站的拉取异常,很快地就定位到了问题

image-20240411193722085在哪显然这里是打错了,在用Feigin访问后管的时候,用错了方式

既然两个基本一致的问题解决了一个,那另一个不是也差不多了?

这里就顺着之前的思路Debug,最后同样定位到了向后管发请求的地方,但是怎么都找不到是从哪里发的Post请求。

这时就觉得邪门了,哪里来的Post???

于是就试着把请求从@GetMapping改成了@DeleteMapping,居然又用Delete发了请求,这下邪门了。

这里正好前一天晚上调试nacos的时候也遇见了玄学问题

我在配置聚合服务注册到Nacos的服务名时怎么改都没有用,然后半夜折腾了一个多小时就放弃了睡觉了。然后今天一跑起来发现报错了,但是和昨天晚上报错不一样,原来是名称自己又改成我想要的名称了

敲代码,很神奇吧,我昨天也清空过Nacos缓存,重启过,但是并没有什么用。。。过了一个晚上自己就好了。。

又试了下发现还是发PostMapping,然后就关电脑去吃饭跑步了,回来重启电脑发现还是不行。。。

在网上又搜不到相关的信息,所以又把请求打进来的路径逐一排除核实,最终将问题锁定到Feign中

    /**
     * 分页查询短链接
     * @return 分页查询短链接请求返回实体
     */
    @GetMapping("/api/shortlink/v1/page")
    Result<Page<ShortLinkPageRespDTO>> pageShortLink(@RequestBody ShortLinkPageReqDTO requestParam);

再以 Feign Get 为关键字进行检索,发现若Feign中的Get请求若携带了RequestBody,就会自动转换成Post请求发送

这里解决方法是将远程调用的调用端使用Post来发送请求,而为了保证外部传RestFul请求的语意,仍然使用Get来传入

之所以之前的回收站能解决,是因为它用的是3个RequestParam;歪打正着了属于是

image-20240411200843247

蒽,上面的解决方法是错的

按照上面的方法再次进行调试,发现在聚合服务中,短链接后台向短链接中控发送请求时,将Post中的RequestBody丢弃了,然后ShardingSphere在查数据库的时候,由于在Params里面找不到分片键,所以报错了Sharding value null must implements Comparable.,我还以为是聚合服务的分片配错了,又浪费了半天debug

现在的解决方法非常粗暴,但是非常有效。。。。

image-20240411205527424

这里注意分页查询回收站并没有实现OrderTag,可能会在分类排序中

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值