SpringCloud和Nacos的介绍原理在这里就不多说了,百度一大堆,这里就只是记录一下刚开始学习时候项目的使用过程
Nacos-server
我这里是从官网下载的Nacos-server
下载解压之后就可以启动使用
修改端口:
用编辑器打开bin目录下的startup.cmd文件 添加一行代码
set "JAVA_OPT=%JAVA_OPT% --server.port=9090
解压后进入bin文件夹,直接双击执行startup.cmd文件,启动成功如下图:
创建项目父工程
IDEA中创建聚合项目nacos作为父工程,其pom.xml如下
4.0.0
com.example
nacos
pom
1.0-SNAPSHOT
nacosprovider
nacosconsumer
nacosconfig
1.8
2.0.4.RELEASE
Finchley.RELEASE
0.2.2.RELEASE
org.projectlombok
lombok
true
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-test
test
org.springframework.cloud
spring-cloud-dependencies
${spring-cloud.version}
pom
import
org.springframework.boot
spring-boot-dependencies
${spring-boot.version}
pom
import
org.springframework.cloud
spring-cloud-alibaba-dependencies
${nacos.version}
pom
import
创建服务提供方
在父工程Nacos下创建springboot子工程nacos-provider,其pom.xml文件为:
nacos
com.example
1.0-SNAPSHOT
4.0.0
nacos-provider
1.8
org.springframework.cloud
spring-cloud-starter-alibaba-nacos-discovery
org.springframework.boot
spring-boot-maven-plugin
在启动类NacosProviderApplication.java中增加@EnableDiscoveryClient注解
packagecom.example.nacosprovider;importorg.springframework.boot.SpringApplication;importorg.springframework.boot.autoconfigure.SpringBootApplication;importorg.springframework.cloud.client.discovery.EnableDiscoveryClient;
@SpringBootApplication
@EnableDiscoveryClientpublic classNacosProviderApplication {public static voidmain(String[] args) {
SpringApplication.run(NacosProviderApplication.class, args);
}
}
配置文件application.yml进行如下配置
server:
port: 8000
spring:
application:
name: nacos-provider
cloud:
nacos:
discovery:
server-addr: localhost:8848
在服务提供方创建一个对外接口
packagecom.example.nacosprovider.controller;importorg.springframework.web.bind.annotation.GetMapping;importorg.springframework.web.bind.annotation.RestController;
@RestControllerpublic classProviderController {
@GetMapping("/helloProvider")publicString helloProvider(){return "你好,我是服务提供者";
}
}
创建服务消费者
仍然在nacos工程下创建一个SpringBoot项目子工程命名为nacos-consumer,其pom文件与nacos-provider相同。
在启动类NacosConsumerApplication.java中增加@EnableDiscoveryClient和@EnableFeignClients注解
packagecom.example.nacosconsumer;importorg.springframework.boot.SpringApplication;importorg.springframework.boot.autoconfigure.SpringBootApplication;importorg.springframework.cloud.client.discovery.EnableDiscoveryClient;importorg.springframework.cloud.openfeign.EnableFeignClients;
@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClientspublic classNacosConsumerApplication {public static voidmain(String[] args) {
SpringApplication.run(NacosConsumerApplication.class, args);
}
}
同样为nacos-consumer增加配置文件,内容如下
server:
port: 9000
spring:
application:
name: nacos-consumer
cloud:
nacos:
discovery:
server-addr: localhost:8848
feign:
hystrix:
enabled: true
使用feign进行服务调用,hystrix进行熔断
项目目录
在service中进行服务提供者的接口调用
packagecom.example.nacosconsumer.service;importcom.example.nacosconsumer.service.impl.ConsumerServiceImpl;importorg.springframework.cloud.openfeign.FeignClient;importorg.springframework.web.bind.annotation.GetMapping;
@FeignClient(name= "nacos-provider", fallback = ConsumerServiceImpl.class)public interfaceConsumerService {
@GetMapping("/helloProvider")
String getHello();
}
在service的实现类中进行重写
packagecom.example.nacosconsumer.service.impl;importcom.example.nacosconsumer.service.ConsumerService;importorg.springframework.stereotype.Component;
@Componentpublic class ConsumerServiceImpl implementsConsumerService{
@OverridepublicString getHello() {return "服务出错";
}
}
在controller中调用service的接口,像一般的接口调用一样
packagecom.example.nacosconsumer.controller;importcom.example.nacosconsumer.service.ConsumerService;importorg.springframework.web.bind.annotation.GetMapping;importorg.springframework.web.bind.annotation.RestController;importjavax.annotation.Resource;
@RestControllerpublic classConsumerController {
@ResourceprivateConsumerService consumerService;
@GetMapping("/getHello")publicString getHello(){returnconsumerService.getHello();
}
}
调用测试
启动完成后,在服务提供者和消费者的日志中应该可以分别看到如下信息
2019-12-10 16:36:37.800 INFO 18452 --- [ main] o.s.c.a.n.registry.NacosServiceRegistry : nacos registry, application 172.16.74.34:9001 register finished
现在登录Nacos控制台,你会发现服务列表中,已经显示了我们刚才创建的两个项目,并可以对其进行简单的监控和管理。
浏览器中访问服务消费者的接口 http://localhost/consumer, 可以看到成功返回结果