接着上篇文章写:SpringCloud多模块开发
上篇文章编写了如何搭建多个项目,并且完美运行起来,那么项目间的相互调用要如何实现呢?
首先我在toutiao_download项目中创建了基础数据,和可供外部调用的controller
现在我在快手系统里面要如何才能获取到头条里面的信息呢?
第一步:引入feign依赖
使用feign来实现,首先我们要引入依赖
<!-- feign -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
我这里这在父类的pom中引入了(因为我这里整合了一下,可以看 springcloud修改父和子pom文件,实现统一管理)
第二步:在启动类上加入@EnableFeignClients注解
第三步:编写Feign的接口,注意这里要与头条controller的url一致
@FeignClient 里面的name为头条application中定义的名字
url必须和头条里面的controller指定的一致。
第四步:这里创建好以后,就可以在service中使用了
发现启动快手项目报错了,
报这个错误的原因是因为我命名的问题,feign不支持下划线,这个坑人,那么只能修改下了。
在头条里修改下application.name
快手feign里也改成一样的
改好后,分别启动项目就好了。
第五步:开始访问
返回数据了,那么这里可能有人就认为可以了,在头条的方法里加一个睡眠时间
睡眠1s
再次访问,发现报错了
在配置文件中,加入如下配置解决
feign:
client:
config:
default:
connectTimeout: 2000
readTimeout: 2000
再次访问就好了,但是这个2s你要根据自己的实际情况来决定