@RequestMapping("/getGoods")
public ResponseResult getGoods() {
String url="http://goods-provide/getGoods";
return ResponseResult.success("操作成功",
restTemplate.getForObject(url,Object.class));
}
@Bean
public IRule Irule(){
return new RandomRule();//随机负载均衡
}
# 饥饿加载(懒加载) 已启动就获取服务
ribbon:
eager-load:
enabled: true
clients: goods-provide #多个服务使用逗号隔开
public class IRuleConfig extends AbstractLoadBalancerRule {
@Autowired
private NacosDiscoveryProperties nacosDiscoveryProperties;
@Override
public void initWithNiwsConfig(IClientConfig iClientConfig) {
}
@Override
public Server choose(Object key) {
try {
BaseLoadBalancer loadBalancer = (BaseLoadBalancer)this.getLoadBalancer();
//获取请求微服务的名称
String name = loadBalancer.getName();
//获取nacos服务发现相关名称
NamingService namingService = nacosDiscoveryProperties.namingServiceInstance();
//nacos client自动通过基于权重的负载均衡算法,选择实例
Instance instance = namingService.selectOneHealthyInstance(name);
System.out.println("端口:"+instance.getPort()+"实例:"+instance);
return new NacosServer(instance);
} catch (NacosException e) {
e.printStackTrace();
return null;
}
}
}
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
@FeignClient(name="goods-provide")
public interface FeiginClient {
@RequestMapping("/getGoods")
public Object getGoods();
}
@Autowired
private FeiginClient feiginClient;
@RequestMapping("/getGoods")
public ResponseResult getGoods() {
return ResponseResult.success("操作成功",
feiginClient.getGoods());
}
1.在goods中 编写带参数的请求
@RequestMapping("/getGoodsWithID/{id}")
public ResponseResult getGoodsWithID(@PathVariable Integer id){
return ResponseResult.success("id="+id);
}
@RequestMapping("/getGoodsWithID/{id}")
public ResponseResult getGoodsWithID(@PathVariable Integer id);
@RequestMapping("/getGoodsWithID/{id}")
public ResponseResult getGoodsWithID(@PathVariable Integer id){
return ResponseResult.success("操作成功",
feiginClient.getGoodsWithID(id));
}
public class Goods implements Serializable {
private String name;
private String color;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
}
<dependency>
<groupId>com.dj</groupId>
<artifactId>GoodsPojo</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
@RequestMapping("/getGoodsWithObj")
public ResponseResult getGoodsWithObj(Goods goods){
return ResponseResult.success("操作成功",
feiginClient.getGoodsWithObj(goods));
}