作者回复: 网上还是有不少类似的问题解决方案的,可以搜索一下“Feign 获取 Header”,比如,在其中大部分都会提到要修改一下hystrix.command.default.execution.isolation.strategy=SEMAPHORE ,你可以试试。
作者回复: 能把详细的报错提供一下么?很长的话可以贴在Github的gist里,把URL贴留言里
作者回复: webflux的服务发不出来就和普通的web服务是一样的,所以可以用feign去调用这些服务。不过一般情况下feign的调用是同步的,不像webclient这样调用是异步的,网上有基于webclient写的非同步的feign,可以了解一下。
作者回复: 这个是说某些Bean可能没有被所有BeanPostProcessor处理,因此有些增强逻辑可能就没有。这个情况会比较多,比如,有些是提前初始化了某个Bean,还是得仔细检查下启动顺序,分析后才能知道是哪些Bean影响了。
作者回复: 建议用Google,一般会找到Github或者Stackoverflow上,国内的也有一些网站,用对关键字比较重要。
作者回复: 应该是序列化相关的问题,可以拿对应的报错信息去搜索一下。但我不明白的是为什么一定要透传一个HttpServletRequest过去?一定要搞,实在不行的话,把这个Request变成你自己的一个类型,先序列化成JSON的String,传过去后自己再把它反序列化出来总可以吧。这算是个绕过的方法吧,但是有点麻烦。
作者回复: 1. 两个框架都不错,用哪个都可以,但如果你要用HTTP/2,OkHttp大概是目前你唯一的选择,HttpClient的5.0里才支持。
2. 如果想完全按照教科书来,REST服务应该是解耦的,你在客户端重新定义一个Book,能反序列化出来就好。但如果服务的提供方和消费方都是Java的,偷懒一点的做法可以把接口和类打成JAR提供出来。但是,要注意兼容性,别接口一升级就逼着别人跟着你升JAR。
作者回复: @PostMapping(path = "/", consumes = MediaType.APPLICATION_JSON_VALUE,
produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
在方法上用这样的形式可以限定接收和返回的类型,都是JSON。
作者回复: 建议可以看看程序猿DD或者周立的博客,对Feign上传文件都有示例,比如http://blog.didispace.com/spring-cloud-starter-dalston-2-4/和http://www.itmuch.com/spring-cloud-sum/spring-cloud-feign-upload/
作者回复: Feign就是远程调用了,针对远程调用,你觉得是不是应该有一定的封装呢?如果内容很简单,你也可以直接拿个对象来用。这个就是你自己把握啦。
作者回复: 本质都是做了远程调用,只是使用的方式不同而已
作者回复: 你到底是用的Eureka还是Consul呢,你说的是启动Eureka,但报错是Consul的哦
作者回复: 第94讲就是和这个相关的内容。
作者回复: 支持呀,我们的接口不都是JSON的么