「程序员闯关记」:Feign调用遭遇JSON解析错误,熔断器难以避免

104 阅读2分钟

错误信息:

JSON parse error: Illegal character ((CTRL-CHAR, code 31)): only regular white space (\r, \n, \t) is allowed between tokens…

通过feign去调用其他服务的时候报上面的错误了,当传入的参数比较少的时候并没有错误,但是传入参数一多就自动走hystrix熔断器了。

在开发过程中,我们经常需要使用Feign来调用其他服务的API。然而,有时候会遇到一些奇怪的错误,例如上述JSON解析错误。这个错误通常是由于传入的数据中包含了非法字符所引起的。

如果传入的参数比较少,可能不会出现这个问题,但一旦传入的参数数量增加,就会出现这个错误,并导致Feign自动触发Hystrix熔断器。这个问题可能会很棘手,因为它可能会导致系统无法正常工作。

在排查这个问题时,我们可以尝试使用不同的方式去接收对方返回的参数。例如,使用一个Object去接收返回参数,或者使用一个Map来接收返回参数。然而,这些尝试都可能无法解决这个问题。

为了解决这个问题,我们需要在Feign的配置中添加一些设置,以确保传输的数据不会被压缩。具体来说,我们需要取消Feign的压缩限制,这样就可以避免传输数据被压缩所导致的问题。

然而,有时候即使我们添加了这些配置,问题仍然无法得到解决。如果这种情况发生,我们可以尝试使用一些其他的解决方法。例如,我们可以尝试缩小被调用方返回的数据,或者使用原生的HTTP去请求对面的API,这些都可能是有效的解决方法。

总之,当我们遇到Feign调用其他服务时出现JSON解析错误的问题时,我们应该仔细检查Feign的配置,并尝试使用不同的方式去接收返回参数,以及使用其他解决方法来解决这个问题。