nacos(六): 创建第一个多模块微服务项目(生产者与消费者)

要创建出生产者与消费者一体的多模块项目,总体来说分成三个步骤。分别是先创建出项目主体,再分别创建出生产者与消费者。

 

步骤一:创建项目主体

1. 先创建一个单体项目作为项目的主题。在这里,我们不用脚手架,通过IDEA的向导直接进行创建。根据下图进行新建项目的配置:

nacos(六): 创建第一个多模块微服务项目(生产者与消费者)

 

 2. 然后点击下一击,选择版本与依赖项:

nacos(六): 创建第一个多模块微服务项目(生产者与消费者)

 

3. 在生成的主项目中,只保留pom.xml,其余的文件可以全部删掉:

nacos(六): 创建第一个多模块微服务项目(生产者与消费者)

 

4. 将pom.xml的内容进行如下修改:

<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">     <modelVersion>4.0.0</modelVersion>     <modules>         <module>producer</module>         <module>consumer</module>     </modules>          <groupId>com.example</groupId>     <artifactId>alibabanacos</artifactId>     <version>0.0.1-SNAPSHOT</version>     <name>alibabanacos</name>     <description>alibabanacos</description>      <packaging>pom</packaging>      <properties>         <java.version>1.8</java.version>         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>         <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>         <spring-boot.version>2.7.6</spring-boot.version>         <spring-cloud-alibaba.version>2021.0.5.0</spring-cloud-alibaba.version>     </properties>     <dependencies>         <!--springboot-->         <dependency>             <groupId>org.springframework.boot</groupId>             <artifactId>spring-boot-starter</artifactId>         </dependency>          <dependency>             <groupId>org.springframework.boot</groupId>             <artifactId>spring-boot-starter-web</artifactId>         </dependency>          <dependency>             <groupId>org.springframework.boot</groupId>             <artifactId>spring-boot-starter-test</artifactId>             <scope>test</scope>         </dependency>     </dependencies>     <dependencyManagement>         <dependencies>             <dependency>                 <groupId>org.springframework.boot</groupId>                 <artifactId>spring-boot-dependencies</artifactId>                 <version>${spring-boot.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>      <build>         <plugins>             <plugin>                 <groupId>org.apache.maven.plugins</groupId>                 <artifactId>maven-compiler-plugin</artifactId>                 <version>3.8.1</version>                 <configuration>                     <source>1.8</source>                     <target>1.8</target>                     <encoding>UTF-8</encoding>                 </configuration>             </plugin>          </plugins>     </build>  </project>

其中,有几个配置节需要注意:

<modules>配置节代表着后面要创建的子模块的名称;

<packaging>配置节代表打包方式,因为主项目只有一个pom.xml,主要是协调和管理子项目,所以无需打包改为pom即可。

 

步骤二:创建生产者producer

1. 在主项目下新建producer模块:

nacos(六): 创建第一个多模块微服务项目(生产者与消费者)

nacos(六): 创建第一个多模块微服务项目(生产者与消费者)

nacos(六): 创建第一个多模块微服务项目(生产者与消费者)

 

2. 在main包下面创建出resources文件夹:

nacos(六): 创建第一个多模块微服务项目(生产者与消费者)

 

3. 在producer下创建target文件夹:

nacos(六): 创建第一个多模块微服务项目(生产者与消费者)

 

4. 之后如下修改pom.xml

<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">     <modelVersion>4.0.0</modelVersion>     <parent>         <groupId>com.example</groupId>         <artifactId>alibabanacos</artifactId>         <version>0.0.1-SNAPSHOT</version>     </parent>     <packaging>jar</packaging>     <artifactId>producer</artifactId>     <description>producer</description>     <properties>         <java.version>1.8</java.version>         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>         <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>         <spring-boot.version>2.7.6</spring-boot.version>     </properties>     <dependencies>         <!--springboot-->         <dependency>             <groupId>org.springframework.boot</groupId>             <artifactId>spring-boot-starter</artifactId>         </dependency>          <dependency>             <groupId>org.springframework.boot</groupId>             <artifactId>spring-boot-starter-web</artifactId>         </dependency>          <!-- 服务发现(生产者)  -->         <dependency>             <groupId>com.alibaba.cloud</groupId>             <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>         </dependency>     </dependencies>      <build>         <plugins>             <plugin>                 <groupId>org.apache.maven.plugins</groupId>                 <artifactId>maven-compiler-plugin</artifactId>                 <version>3.8.1</version>                 <configuration>                     <source>1.8</source>                     <target>1.8</target>                     <encoding>UTF-8</encoding>                 </configuration>             </plugin>             <plugin>                 <groupId>org.springframework.boot</groupId>                 <artifactId>spring-boot-maven-plugin</artifactId>                 <version>${spring-boot.version}</version>                 <configuration>                     <mainClass>com.example.producer.ProducerApplication</mainClass>                     <skip>false</skip>                 </configuration>                 <executions>                     <execution>                         <id>repackage</id>                         <goals>                             <goal>repackage</goal>                         </goals>                     </execution>                 </executions>             </plugin>         </plugins>     </build>  </project>

 

5. 在启动类上添加@EnableDiscoveryClient注解

nacos(六): 创建第一个多模块微服务项目(生产者与消费者)

 

6.  在resources资源目录下添加application.yml文件

nacos(六): 创建第一个多模块微服务项目(生产者与消费者)

并在文件中添加如下配置:

server:   port: 8085  spring:   cloud:     nacos:       discovery:         server-addr: 127.0.0.1:8848         username: nacos         password: nacos       config:         server-addr: 127.0.0.1:8848         username: nacos         password: nacos         namespace: public      loadbalancer:       nacos:         enabled: true    application:     name: product

到这里对生产者的配置已经完成,这时启动生产者,即可在nacos后台的服务列表中看到product实例:

nacos(六): 创建第一个多模块微服务项目(生产者与消费者)

 

 

步骤三:创建消费者consumer

总体步骤和生产者创建几乎一致,不同的地方在于以下几个方面:

1. pom.xml

<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">     <modelVersion>4.0.0</modelVersion>     <parent>         <groupId>com.example</groupId>         <artifactId>alibabanacos</artifactId>         <version>0.0.1-SNAPSHOT</version>     </parent>     <artifactId>consumer</artifactId>     <packaging>jar</packaging>       <dependencies>         <!--springboot-->         <dependency>             <groupId>org.springframework.boot</groupId>             <artifactId>spring-boot-starter</artifactId>         </dependency>          <dependency>             <groupId>org.springframework.boot</groupId>             <artifactId>spring-boot-starter-web</artifactId>         </dependency>          <!-- 服务发现(生产者)  -->         <dependency>             <groupId>com.alibaba.cloud</groupId>             <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>         </dependency>          <!--消费者-->         <dependency>             <groupId>org.springframework.cloud</groupId>             <artifactId>spring-cloud-starter-loadbalancer</artifactId>             <version>3.1.5</version>         </dependency>     </dependencies>       <build>         <plugins>             <plugin>                 <groupId>org.apache.maven.plugins</groupId>                 <artifactId>maven-compiler-plugin</artifactId>                 <version>3.8.1</version>                 <configuration>                     <source>1.8</source>                     <target>1.8</target>                     <encoding>UTF-8</encoding>                 </configuration>             </plugin>             <plugin>                 <groupId>org.springframework.boot</groupId>                 <artifactId>spring-boot-maven-plugin</artifactId>                 <version>${spring-boot.version}</version>                 <configuration>                     <mainClass>com.example.consumer.ConsumerApplication</mainClass>                     <skip>false</skip>                 </configuration>                 <executions>                     <execution>                         <id>repackage</id>                         <goals>                             <goal>repackage</goal>                         </goals>                     </execution>                 </executions>             </plugin>         </plugins>     </build>  </project>

 

2. application.yml

server:   port: 8086  spring:   cloud:     nacos:       discovery:         server-addr: 127.0.0.1:8848         username: nacos         password: nacos       config:         server-addr: 127.0.0.1:8848         file-extension: properties         username: nacos         password: nacos     loadbalancer:       nacos:         enabled: true    application:     name: consumer

具体消费者如何通过loadbalance调用生产者提供的服务,可以参考《nacos(四): 创建第一个消费者Conumer(单体)》

 

最终成果:整个项目的工程目录结构基本如下

nacos(六): 创建第一个多模块微服务项目(生产者与消费者)

 

本文到这里就完成了。下一篇,我们将一起关注网关gateway的使用: )

 

发表评论

评论已关闭。

相关文章