继springcloud初始项目后的继续完善:https://blog.csdn.net/newsun87/article/details/127876983?spm=1001.2014.3001.5501
新建一个maven项目
导入依赖>添加配置>添加使用Enable注解>
1.导入依赖
<!--导入Eureka依赖-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka-server</artifactId>
<version>1.4.6.RELEASE</version>
</dependency>
<!--也可导入热部署-->
2.Eureka配置文件
server:
port: 8001
#Eureka配置
eureka:
instance:
hostname: localhost #Eureka服务端实例名称
client:
register-with-eureka: false #是否向注册中心注册自己
fetch-registry: false #false表示自己为注册中心
service-url:
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
3.启动类,添加Enable注解
@SpringBootApplication
@EnableEurekaServer
public class EurekaServer {
public static void main(String[] args) {
SpringApplication.run(EurekaServer.class,args);
}
}
开发时遇到的问题1
1.Failed to retrieve application JMX service URL 在启动Eureka项目时一直无法启动报错,百度后很多人遇到这个问题,解决方案如下。
选择报错的工程启动类,相同的配置,不是每一个都启动报错
取消选择springBoot后取消勾选
开发时遇到的问题2
在建父工程的时候,我选择的springCloud版本和springBoot版本分别是:
springCloud :Greenwich.SR2
springBoot :2.1.4.RELEASE
结果在启动Eureka工程时一直报错,报错内容没有完全复制,百度后大概知道是版本不匹配导致的,但是不知道选择哪个版本合适,
Eureka:1.4.6.RELEASE
最后升级了springCloud和springBoot版本搞定,具体报错内容没有保存
启动后能访问以下页面,表示eureka服务启动成功,接下来需要在服务提供者和服务消费者两个工程配置Eureka配置相关信息,用于注册和远程调用
4.在服务提供者加入Eureka
导入Eureka依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
<version>1.4.6.RELEASE</version>
</dependency>
5.在服务提供者配置文件中添加Eureka配置
#Eureka注册位置
eureka:
client:
service-url:
defaultZone : http://localhost:8001/eureka/
6.启动类添加注解
@EnableEurekaClient//在服务启动后注册到eureka
先启动该Eureka,再启动服务提供者
修改Eureka上的默认描述,在配置文件修改
7.完善监控信息
可以在服务提供者中,配置想让消费者看到的信息
pom文件导入新的jar
<!--配置监控信息-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
配置文件中添加展示信息
info:
app:
name : springcloud-kuang
company : com.kuang.study
跳转结果就是展示配置信息主要用户介绍注册中心
8.注册发现(只做功能介绍,实际作用不大)
获取相关服务提供者信息,在服务提供者添加接口信息
import org.springframework.cloud.client.discovery.DiscoveryClient;
@Autowired
private DiscoveryClient client;
@GetMapping("/dept/decovery")
public Object getClient(){
//获取微服务列表清单
List<String> services = client.getServices();
//获取服务提供者的id
System.out.println("services=>"+services);
List<ServiceInstance> instances = client.getInstances("SPRINGCLOUD-PROVIER-DEPT");
//便利服务提供的信息
for (ServiceInstance serviceInstance :instances
) { System.out.println(serviceInstance.getHost()+":="+serviceInstance.getPort()+":="+serviceInstance.getUri()+":="+serviceInstance.getServiceId());
}
return client;
}
在启动类添加注解
@SpringBootApplication
@EnableEurekaClient//在服务启动后注册到eureka
@EnableDiscoveryClient//服务发现生效注解
public class DeptProvider {
public static void main(String[] args) {
SpringApplication.run(DeptProvider.class,args);
}
}
启动后访问接口
eureka集群配置
1. 新建不同的eureka服务端工程项目
2.服务端配置修改 以8003为例
server:
port: 8003
#Eureka配置
eureka:
instance:
hostname: eureka8003.com #Eureka服务端实例名称
client:
register-with-eureka: false #是否向注册中心注册自己
fetch-registry: false #false表示自己为注册中心
service-url: #关联不同的eureka地址
defaultZone: http://eureka8001.com:8001/eureka/,http://eureka8002.com:8002/eureka/
3.服务提供者修该配置集群注册的服务
#Eureka注册位置
eureka:
client:
service-url:
defaultZone : //写在本行,三个注册服务,注意格式
http://eureka8001.com:8001/eureka/,
http://eureka8002.com:8002/eureka/,
http://eureka8003.com:8003/eureka/
== 任意注册中心,都有关联另外两个注册中心,同时都注册了服务提供者8002 ==