首先我们需要安装nacos:快速开始
github下载地址:Releases · alibaba/nacos (github.com)
我使用windows学习nacos,所以下载zip结尾的包。
如果github访问慢,我的gitee上面的cloud2020项目有nacos安装包:cloud2020
我使用nacos-server-1.4.2版本
下载后解压,进入nacos/bin目录
进入cmd
注意要单机启动,否则会报错
启动成功,访问之:nacos地址
用户名和密码均为:nacos
建议直接看cloud2020,其中的cloudalibaba-provider-payment9001,cloudalibaba-provider-payment9002,cloudalibaba-consumer-nacos-order83,cloudalibaba-config-nacos-client3377
模块均为nacos相关。
nacos文档写的很简略,我们看看spring的文档吧,我用的2.1.2版本,因此文档为:spring cloud alibaba2.1.2
由文档可知,首先我们需要在父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>
对于服务注册和发现我们需要在子项目pom中引入如下:
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
以上的不完整,看看文档写的完整版:
<?xml version="1.0" encoding="UTF-8"? >
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>open.source.test</groupId>
<artifactId>nacos-discovery-test</artifactId>
<version>1.0-SNAPSHOT</version>
<name>nacos-discovery-test</name>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>${spring.boot.version}</version>
<relativePath/>
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring.cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>${spring.cloud.alibaba.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
其中dependencyManagement部分应该写入父pom中,在子pom中引入web,actuator,nacos-discovery等依赖。
application.yml:
server:
port: 9001
spring:
application:
name: nacos-payment-provider
cloud:
nacos:
discovery:
server-addr: localhost:8848 #配置Nacos地址
management:
endpoints:
web:
exposure:
include: '*'
我们需要写,当前微服务端口,微服务名,nacos地址,暴露端口给actuator。
对于服务提供者:主启动类额外添加@EnableDiscoveryClient
,controller与正常的一样
对于服务消费者:主启动类也是需要添加@EnableDiscoveryClient
,然后我们需要将RestTemplate注入spring:
@Bean
public RestTemplate restTemplate(){
return new RestTemplate();
}
对于controller有点小变动:
@GetMapping("/echo/app-name")
public String echoAppName(){
//Access through the combination of LoadBalanceClient and RestTemplate
ServiceInstance serviceInstance = loadBalancerClient.choose("nacos-provider");
String path = String.format("http://%s:%s/echo/%s",serviceInstance.getHost(),serviceInstance.getPort(),appName);
System.out.println("request path:" +path);
return restTemplate.getForObject(path,String.class);
}
我们要远程调用提供者的服务,我们要用restTemplate.getForObject(path,String.class)
方法,path为提供者接口地址。
在cloud2020中启动cloudalibaba-provider-payment9001,cloudalibaba-consumer-nacos-order83模块,从nacos服务列表可看到
未完待续~~~🍍🍍🍍🍍
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/195930.html