SpringCloudAlibaba随笔目录
一、SpringCloudAlibaba项目之父工程搭建
二、SpringCloudAlibaba项目之Nacos搭建及服务注册
三、SpringCloudAlibaba项目之生产者与消费者
四、SpringCloudAlibaba项目之Ribbon负载均衡
五、SpringCloudAlibaba项目之OpenFeign远程调用
【springcloud gateway网关 SpringCloudAlibaba项目之生产者与消费者】六、SpringCloudAlibaba项目之Nacos-config配置中心
七、SpringCloudAlibaba项目之Sentinel流量控制
八、SpringCloudAlibaba项目之Seata分布式事务
九、SpringCloudAlibaba项目之GateWay网关
十、SpringCloudAlibaba项目之SkyWalking链路追踪
SpringCloudAlibaba项目之生产者与消费者
1、生产者与消费者
本篇文章,我们搭建俩个服务,生产者服务与消费者服务 。
我们以电商系统为例:服务生产者service-order,服务消费者service-stock
说明:service-order 作为消费者提供新增订单信息的功能,service-stock作为生产者提供库存的扣减服务功能;这里调用者为消费者,被掉用者为生产者 。
项目目录

文章插图
2、生产者服务搭建
使用Spring Initializr创建

文章插图
修改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><artifactId>spring-cloud-alibaba</artifactId><groupId>com.qt</groupId><version>1.0-SNAPSHOT</version></parent><groupId>com.qt</groupId><artifactId>service-stock</artifactId><version>0.0.1-SNAPSHOT</version><name>service-stock</name><description>service-stock project for Spring Boot</description><dependencies><!-- springweb 启动依赖 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- nacos 服务注册发现(客户端)依赖 --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency><!-- springboot 测试类 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope><exclusions><exclusion><groupId>org.junit.vintage</groupId><artifactId>junit-vintage-engine</artifactId></exclusion></exclusions></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>2.3.7.RELEASE</version><configuration><mainClass>com.qt.servicestock.ServiceStockApplication</mainClass></configuration><executions><execution><id>repackage</id><goals><goal>repackage</goal></goals></execution></executions></plugin></plugins></build></project>父工程的pom.xml文件添加:
<modules><module>service-stock</module></modules>application.properties修改:
# 应用名称spring.application.name=service-stock# 应用服务 WEB 访问端口server.port=8030# Nacos帮助文档: https://nacos.io/zh-cn/docs/concepts.html# Nacos认证信息spring.cloud.nacos.discovery.username=nacosspring.cloud.nacos.discovery.password=nacos# Nacos 服务发现与注册配置,其中子属性 server-addr 指定 Nacos 服务器主机和端口spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848# 注册到 nacos 的指定 namespace,默认为 publicspring.cloud.nacos.discovery.namespace=public新增StockController:/** * 库存服务 */@RestController@RequestMapping("/stock")public class StockController {@Value("${server.port}")private String port;/*** 库存新增* @return*/@RequestMapping("/addStock")public String addStock(){System.out.println("库存新增成功");return "库存服务-库存新增成功";}/*** 库存扣减* @return*/@RequestMapping("/subStock")public String subStock(){System.out.println("库存扣减成功");return "库存服务-库存扣减成功 - 端口:" + port;}} 启动类:
@SpringBootApplication@EnableDiscoveryClient //可加可不加,依版本而定,从Spring Cloud Edgware开始,@EnableDiscoveryClient可省略 。只需加上相关依赖,并进行相应配置,即可将微服务注册到服务发现组件上 。public class ServiceStockApplication {public static void main(String[] args) {SpringApplication.run(ServiceStockApplication.class, args);}}3、消费者服务搭建(和生产者创建一样)
使用Spring Initializr创建

文章插图
修改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><artifactId>spring-cloud-alibaba</artifactId><groupId>com.qt</groupId><version>1.0-SNAPSHOT</version></parent><groupId>com.qt</groupId><artifactId>service-order</artifactId><version>0.0.1-SNAPSHOT</version><name>service-order</name><description>service-order project for Spring Boot</description><dependencies><!-- springweb 启动依赖 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- nacos 服务注册发现(客户端)依赖 --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency><!-- springboot 测试类 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope><exclusions><exclusion><groupId>org.junit.vintage</groupId><artifactId>junit-vintage-engine</artifactId></exclusion></exclusions></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>2.3.7.RELEASE</version><configuration><mainClass>com.qt.serviceorder.ServiceOrderApplication</mainClass></configuration><executions><execution><id>repackage</id><goals><goal>repackage</goal></goals></execution></executions></plugin></plugins></build></project>父工程的pom.xml文件添加:
<modules><module>service-stock</module><module>service-order</module></modules>application.properties修改:
# 应用名称spring.application.name=service-order# 应用服务 WEB 访问端口server.port=8040# Nacos帮助文档: https://nacos.io/zh-cn/docs/concepts.html# Nacos认证信息spring.cloud.nacos.discovery.username=nacosspring.cloud.nacos.discovery.password=nacos# Nacos 服务发现与注册配置,其中子属性 server-addr 指定 Nacos 服务器主机和端口spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848# 注册到 nacos 的指定 namespace,默认为 publicspring.cloud.nacos.discovery.namespace=public新增OrderController:
/** * 新增订单 * @return */@RequestMapping("/addOrder")public String addOrder(){System.out.println("订单新增成功");//调用库存扣减String apiReqResult = restTemplate.getForObject("http://service-stock/stock/subStock",String.class);return "订单服务-订单新增成功:" + apiReqResult;}启动类:
@SpringBootApplication@EnableDiscoveryClient //可加可不加,依版本而定,从Spring Cloud Edgware开始,@EnableDiscoveryClient可省略 。只需加上相关依赖,并进行相应配置,即可将微服务注册到服务发现组件上 。public class ServiceOrderApplication {public static void main(String[] args) {SpringApplication.run(ServiceOrderApplication.class, args);}}4、使用RestTemplate实现调用(后面使用OpenFeign远程调用)
/** * SpringBoot-RestTemplate实现调用第三方API */@Configuration@Componentpublic class RestTemplateConfig {@Bean@LoadBalanced //使RestTemplate请求支持负载均衡public RestTemplate restTemplate(RestTemplateBuilder builder){RestTemplate restTemplate = builder.build();return restTemplate;}}5、运行效果
服务注册

文章插图
访问接口地址:http://localhost:8040/order/addOrder

文章插图
总结:实践是检验真理的唯一标准 。
- 春季老年人吃什么养肝?土豆、米饭换着吃
- 三八妇女节节日祝福分享 三八妇女节节日语录
- 老人谨慎!选好你的“第三只脚”
- 校方进行了深刻的反思 青岛一大学生坠亡校方整改校规
- 脸皮厚的人长寿!有这特征的老人最长寿
- 长寿秘诀:记住这10大妙招 100%增寿
- 春季老年人心血管病高发 3条保命要诀
- 眼睛花不花要看四十八 老年人怎样延缓老花眼
- 香槟然能防治老年痴呆症? 一天三杯它人到90不痴呆
- 老人手抖的原因 为什么老人手会抖
