在集成的过程中,由于刚入门Nacos,总是把项目依赖包的搞错,下面分别从springboot、springcloud两个例子人手。
一、springboot & Nacos
1. 引入POM依赖
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>nacos-discovery-spring-boot-starter</artifactId>
<version>0.2.10</version>
</dependency>
2. 编写application.yml配置文件
server:
port: 6002
servlet:
context-path: /springboot-nacos-discovery
spring:
application:
name: springboot-nacos-discovery
nacos:
discovery:
server-addr: localhost:8848
namespace: 7e98b650-0c03-4663-b747-b3d4848630aa
3. 编写注册代码
@Configuration
public class NacosDiscovery {
@Value("${server.port}")
private int serverPort;
@Value("${spring.application.name}")
private String applicationName;
@NacosInjected
private NamingService namingService;
@PostConstruct
public void registerInstance() throws NacosException {
namingService.registerInstance(applicationName,"127.0.0.1",serverPort);
}
}
二、springcloud & Nacos
1. 引入POM依赖
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2.1.0.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
</dependencies>
2. 编写application.yml 和 bootstrap.yml 配置文件
server:
port: 6004
servlet:
context-path: /springcloud-nacos-discovery
spring:
application:
name: springcloud-nacos-discovery
bootstrap.yml
spring:
cloud:
nacos:
discovery:
server-addr: localhost:8848
namespace: 7e98b650-0c03-4663-b747-b3d4848630aa
group: DEFAULT_GROUP
3. 通过注解@EnableDiscoveryClient注入服务
@SpringBootApplication
@EnableDiscoveryClient
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
System.out.println(" ヾ(◍°∇°◍)ノ゙ Application启动成功 ヾ(◍°∇°◍)ノ゙\n" +
" _\n" +
" "
+ " _(_)_ wWWWw _\n" +
" @@@@ (_)@(_) vVVVv _ @@@@ (___) _(_)_\n" +
" @@()@@ wWWWw (_)\ (___) _(_)_ @@()@@ Y (_)@(_)\n" +
" @@@@ (___) `|/ Y (_)@(_) @@@@ \|/ (_)\\n" +
" / Y \| \|/ /(_) \| |/ |\n" +
" \ | \ |/ | / \ | / \|/ |/ \| \|/\n" +
" \\|// \\|/// \\\|//\\\|/// \|/// \\\|// \\|// \\\|// \n" +
"^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^");
}
}
四、服务消费测试
服务消费方式,参考 blog.csdn.net/NoviceZ/art…
Nacos服务消费,有多种方式,下面采用RestTemplate+@LoadBalanced方式举栗子测试。
新建 springcloud-nacos-discovery-client 工程
项目结构与上面工程一样,只是修改 application.yml 配置内容
server:
port: 6005
servlet:
context-path: /springcloud-nacos-discovery-client
spring:
application:
name: springcloud-nacos-discovery-client
编写测试接口
@RestController
public class ConsumerController {
@Autowired
private LoadBalancerClient loadBalancerClient;
@GetMapping("/test")
public String test(String name) {
// 通过spring cloud common中的负载均衡接口选取服务提供节点实现接口调用
ServiceInstance serviceInstance = loadBalancerClient.choose("springcloud-nacos-discovery");
String url = serviceInstance.getUri() + "/springcloud-nacos-discovery/producer?name=" + name;
RestTemplate restTemplate = new RestTemplate();
String result = restTemplate.getForObject(url, String.class);
return "Invoke : " + url + ", return : " + result;
}
}
启动 springcloud-nacos-discovery(生产服务) / springcloud-nacos-discovery-client(消费服务)
测试结果
Invoke : http://192.168.3.16:6004/springcloud-nacos-discovery/producer?name=123, return : RequestParam: 123
官方参考demo:Nacos Spring Cloud 快速开始
springboot/springcloud 集成 Nacos demo:springboot-nacos gitee