前期回顾:
【Zero to One系列】在WSL linux系统上,使用docker运行Mysql与Nacos
1、Nacos配置设置
先在nacos创建命名空间,如下图操作:
创建完成后,服务列表和配置列表,就都会出现如图的tab:
然后,也可以再配置列表中,配置自己需要定义的配置化文件,供后续的项目中读取使用。此处暂不做说明,这个后续章节再细说,如何使用。
2、项目依赖于配置引入
首先,引入相关的nacos依赖,我这边是微服务的系统架构,所以nacos基本很多模块都会引入,我是放在了common包的pom文件中,大家也可以放在root级的pom文件内。依赖包如下:
<dependencies>
<!-- 服务发现依赖 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>2.2.5.RELEASE</version>
</dependency>
<!-- 服务注册与配置依赖 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>2.2.5.RELEASE</version>
</dependency>
</dependencies>
依赖引入后,需要在对应的微服务模块项目中,配置对应的信息,具体如下:
服务发现配置,使用的是bootstrap.yml文件,此处需要注意,必须使用bootstrap的文件,此配置优先级最高,不然后续服务启动,会注册不到对应的命名空间内:
spring:
cloud:
nacos:
discovery:
server-addr: nacos-server-ip:8848
namespace: a663dc6b-98ff-4518-9a06-ffb3e3c4b697
group: ***-dev
服务注册配置(也可以用yaml配置,个人习惯而定):
spring.cloud.nacos.config.server-addr=nacos-server-ip:8848
spring.cloud.nacos.config.namespace=a663dc6b-98ff-4518-9a06-ffb3e3c4b697
spring.cloud.nacos.config.group=***-dev
spring.cloud.nacos.config.file-extension=yaml
在服务的启动类,加上相应的注解,如下:
@EnableDiscoveryClient
@SpringBootApplication
public class ***Application {
public static void main(String[] args) {
SpringApplication.run(***Application.class, args);
}
}
然后就可以启动,看看效果,先看启动日志打印:
再看看nacos注册管理界面:
至此,服务nacos微服务注册就完成啦。。
3、 微服务间的互相调用
首先,通过创建feign接口类,我这边的项目结构中,有一个common模块。我会将一些,通用性的东西,放在此模块中。feign也是如此,各个模块都会相互调用。所以创建一个feign接口的目录,如com.***.common.feign,然后创建被调用服务的feign接口类,如下:
package com.***.common.feign;
import com.***.common.bean.ResultBean;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
@FeignClient(name = "${sys.serviceName.send}",path = "${sys.serviceContext.send}")
public interface SendFeignClient {
@RequestMapping(value = "/sms/sendMessage",method = RequestMethod.POST)
public ResultBean sendSMS();
}
然后,在调用服务的启动类上,加上如下注解:
package com.***.***;
import com.***.common.constant.CommonConstant;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.context.annotation.ComponentScan;
@EnableDiscoveryClient
@EnableFeignClients(basePackages = {CommonConstant.FEIGN_PACKAGE})
@SpringBootApplication
public class ***Application {
public static void main(String[] args) {
SpringApplication.run(***Application.class, args);
}
}
此处的CommonConstant.FEIGN_PACKAGE 就是指向上面的com.***.common.feign,记住这个一定要加上,否则启动服务,会因找不到feign的接口类而报错。。
现在我们启动2个微服务,然后通过服务user调用服务send,如下都注册到nacos服务器后:
然后,在user服务中,就可以通过@resource等注解引入feign接口类,调用send服务中的接口啦。。调用效果我就不演试了,亲测是可用的。。
本次的微服务通过nacos注册集成与调用,至此就结束啦。。至此,微服务的基本架构,就大体已经成形啦。。后续,就是一些拓展性的架构建设了。。例如添加gateway网关、hystrix熔断器等等。。请关注我后续相关的博文输出吧,,加油!!!