在消费者中引入
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
<version>2.0.2.RELEASE</version>
</dependency>
写yml
server:
port: 80
eureka:
client:
registerWithEureka: false # 服务注册,false表示不将本消费者注册到 Eureka 服务器
fetchRegistry: true # 服务发现,true从 Eureka 服务器中获取注册信息
serviceUrl:
default
配置类上加上
- 注解 @LoadBalanced
加上了这个注解之后就配置了
RestTemplate()的负载均衡 而且 可以不用域名的调用服务 而可以用对应服务在yml 中写的服务名称调用
就实现了负载均衡
*/
@Configuration //标识配置类
public class ConfigBean {
@LoadBalanced
@Bean
public RestTemplate getRestTemplate() {
return new RestTemplate();
}
}
配置类上标识@EnableEurekaClient
@SpringBootApplication
public class ProductConsumer_80 {
public static void main(String[] args) {
SpringApplication.run(ProductConsumer_80.class, args);
}
}
检测:
(http://localhost/consumer/product/list)
创建provider集群
复制pom 的依赖
改yml的端口
-
数据库名
不用改应用名称他是在数据库里面用了一个字段来存 数据库
对应了不同数据库的访问
但是是同一个服务 只会有一个服务名
feign 客户端接口调用
使用:
通过定义接口
接口上加注解 使用
就像 mapper 和service一样
就不用resettlement 进行远程调用了
导入pom
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
复制 consumer 的pom和com包 yml
写service 接口 和provider里面的一样
删掉resettlement 的config 配置类
controller 上调
@Autowired
ProductClientService service;
@RequestMapping(value = "/consumer/product/add")
public boolean add(Product product) {
return service.add(product);
}
service 这里面只有接口 而且是再注册中心找指定了服务名称
- 注意:
接口上的参数必须有@之类的注解 spring mvc
boolean add(@RequestBody Product product);
Product get(@PathVariable("id") Long id); - 返回值为复杂数据类型时 类型中必须要有无参构造方法
如下的: Product
@FeignClient(value = "microservice-product") //指定调用的微服务名称
public interface ProductClientService {
@RequestMapping(value = "/product/add", method = RequestMethod.POST)
boolean add(@RequestBody Product product);
@RequestMapping(value = "/product/get/{id}", method = RequestMethod.GET)
Product get(@PathVariable("id") Long id);
@RequestMapping(value = "/product/list", method = RequestMethod.GET)
List<Product> list();
}
启动类上
@EnableEurekaClient
@SpringBootApplication
//会扫描指定包下面使用@FeignClient标识的接口
@EnableFeignClients(basePackages = "com.mengxuegu.springcloud.service")
开启服务测试
然后关闭服务提供者
他自己的客户端就会自己熔断