English 简体中文 繁體中文 한국 사람 日本語 Deutsch русский بالعربية TÜRKÇE português คนไทย french
查看: 1|回复: 0

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

[复制链接]
查看: 1|回复: 0

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

[复制链接]
查看: 1|回复: 0

188

主题

0

回帖

574

积分

高级会员

积分
574
852D6P

188

主题

0

回帖

574

积分

高级会员

积分
574
2025-2-22 10:54:36 | 显示全部楼层 |阅读模式
要创建出生产者与消费者一体的多模块项目,总体来说分成三个步骤。分别是先创建出项目主体,再分别创建出生产者与消费者。
 
步骤一:创建项目主体
1. 先创建一个单体项目作为项目的主题。在这里,我们不用脚手架,通过IDEA的向导直接进行创建。根据下图进行新建项目的配置:

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

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

 
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模块:



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

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

 
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注解

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

并在文件中添加如下配置:
server:  port: 8085spring:  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实例:

 
 
步骤三:创建消费者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: 8086spring:  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(单体)》
 
最终成果:整个项目的工程目录结构基本如下

 
本文到这里就完成了。下一篇,我们将一起关注网关gateway的使用: )
 
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

188

主题

0

回帖

574

积分

高级会员

积分
574

QQ|智能设备 | 粤ICP备2024353841号-1

GMT+8, 2025-3-12 13:46 , Processed in 1.867216 second(s), 29 queries .

Powered by 智能设备

©2025

|网站地图