1.准备feign-api模块
核心依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
编写生产者的接口方法
package com.zzx.apis.wemedia;
import com.heima.model.common.dtos.ResponseResult;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
//生产者的服务器名
@FeignClient("leadnews-wemedia")
public interface wemediaclient {
//编写访问接口类
@GetMapping("/wemedia/channel")
ResponseResult getchannelResult();
}
2.准备生产者模块
在生产者模块加入feign-api模块的依赖
<dependency>
<groupId>cn.itcast.demo</groupId>
<artifactId>Feign-api</artifactId>
<version>1.0</version>
</dependency>
这样就可以实现feign-api接口的方法
package com.heima.wemedia.Feign;
import com.heima.model.common.dtos.ResponseResult;
import com.heima.wemedia.mapper.WmChannelMapper;
import com.heima.wemedia.service.WmChannelService;
import com.zzx.apis.wemedia.wemediaclient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/wemedia")
public class wemediaFeign implements wemediaclient {
@Autowired
private WmChannelService WmChannelServices;
@GetMapping("/channel")
@Override
public ResponseResult getchannelResult() {
return WmChannelServices.findAll();
}
}
3.消费者模块调用生产者的接口
准备依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
<dependency>
<groupId>cn.itcast.demo</groupId>
<artifactId>Feign-api</artifactId>
<version>1.0</version>
</dependency>
启动类开启feign支持扫描feign-api模块下的这个包com.zzx.apis
@EnableFeignClients(basePackages = "com.zzx.apis")
调用feign-api提供的接口方法
@Autowired
private wemediaclient wemediaclient;
/**
*为每个频道缓存30条分值较高的文章
* @param hotArticleVos
*/
private void cacheTagToRedis(List<HotArticleVo> hotArticleVos) {
//feign远程调用wemedia的接口查询所有的频道
ResponseResult responseResult = wemediaclient.getchannelResult();
}