一、配置文件html
application.ymlspring
info:
app:
name: 注册中心服务器
version: 1.0.0-SNAPSHOTapi
server:
port: 1111
tomcat:
max-threads: 1000
uri-encoding: UTF-8tomcat
spring:
profiles:
active: dev
application:
name: pluto-cerberus
http:
encoding:
charset: UTF-8
force: truespringboot
eureka:
client:
register-with-eureka: true
fetch-registry: true
serviceUrl:
defaultZone: "http://peer1:1111/eureka/,http://peer2:1111/eureka/,http://peer3:1111/eureka/"
server:
# 清理间隔(单位毫秒,默认是60*1000)
eviction-interval-timer-in-ms: 5000
enable-self-preservation: false服务器
启动类:app
@EnableEurekaServer
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class,args);
}
}ide
@EnableEurekaServer 服务端启动注解微服务
@EnableEurekaClient
//启动EnableEureka客户端
fetch
SpringCLoud中的“Discovery Service”有多种实现,好比:eureka, consul, zookeeper。
1,@EnableDiscoveryClient
注解是基于spring-cloud-commons
依赖,而且在classpath中实现;
2,@EnableEurekaClient
注解是基于spring-cloud-netflix
依赖,只能为eureka做用;
若是你的classpath中添加了eureka,则它们的做用是同样的。
二、客户端配置文件
application.yml配置
1 2 3 4 5 6 7 8 9 10 11 12 |
|
客户端启动注解:
@EnableFeignClients 微服务之间的调用
今天在项目上遇到一个问题,经过当前service服务要调用到其余service服务的api接口时,可经过EnableFeignClients调用其余服务的api,大概的步骤以下:
一、在springboot的main处加上注解@EnableFeignClients
1 @EnableDiscoveryClient 2 @SpringBootApplication 3 @EnableFeignClients 4 public class DeploymentServiceApplication { 5 6 public static void main(String[] args){ 7 SpringApplication.run(DeploymentServiceApplication.class, args); 8 } 9 10 }
二、在service层上实现接口,这里注意value能够用serviceId代替,可是最好用value来指定要调用的服务。
fallback是当程序错误的时候来回调的方法
方法中要用@PathVariable要注解参数
1 @FeignClient(value = "hap-user-admin-service", fallback = OrganizationLabelFeignClientFallback.class) 2 public interface OrganizationLabelFeignClient { 3 @RequestMapping(value = "/v1/organizations/{id}",method = RequestMethod.GET) 4 Organization queryOrgLabel(@PathVariable(name="id") Long id); 5 }
三、编写程序错误时的回调类,实现接口,在错误时回调
1 @Service 2 public class OrganizationLabelFeignClientFallback implements OrganizationLabelFeignClient { 3 @Override 4 public Organization queryOrgLabel(Long id) { 5 return null; 6 } 7 }
四、调用该服务
1 //声明,自动封装 2 @Autowired 3 private OrganizationLabelFeignClient organizationLabelFeignClient; 4 5 6 //调用 7 Organization organization = organizationLabelFeignClient.queryOrgLabel(organizationId);