• Spring Cloud Alibaba(一)


    整合nacos

     一、项目结构small-shop为父工程,order(订单服务)、stock(库存服务)

     二、父工程pom.xml文件,添加基础依赖,控制版本

    1. <modules>
    2. <module>ordermodule>
    3. <module>stockmodule>
    4. modules>
    5. <properties>
    6. <spring-boot.version>2.3.12.RELEASEspring-boot.version>
    7. <spring-cloud.version>Hoxton.SR12spring-cloud.version>
    8. <spring-cloud-alibaba.version>2.2.9.RELEASEspring-cloud-alibaba.version>
    9. properties>
    10. <dependencyManagement>
    11. <dependencies>
    12. <dependency>
    13. <groupId>org.springframework.bootgroupId>
    14. <artifactId>spring-boot-dependenciesartifactId>
    15. <version>${spring-boot.version}version>
    16. <type>pomtype>
    17. <scope>importscope>
    18. dependency>
    19. <dependency>
    20. <groupId>org.springframework.cloudgroupId>
    21. <artifactId>spring-cloud-dependenciesartifactId>
    22. <version>${spring-cloud.version}version>
    23. <type>pomtype>
    24. <scope>importscope>
    25. dependency>
    26. <dependency>
    27. <groupId>com.alibaba.cloudgroupId>
    28. <artifactId>spring-cloud-alibaba-dependenciesartifactId>
    29. <version>${spring-cloud-alibaba.version}version>
    30. <type>pomtype>
    31. <scope>importscope>
    32. dependency>
    33. dependencies>
    34. dependencyManagement>

    三、stock模块(打算使用order模块调用stock模块)

    3.1、pom.xml

    1. "1.0" encoding="UTF-8"?>
    2. <project xmlns="http://maven.apache.org/POM/4.0.0"
    3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    4. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    5. <parent>
    6. <artifactId>small-shopartifactId>
    7. <groupId>com.xice.shopgroupId>
    8. <version>0.0.1-SNAPSHOTversion>
    9. parent>
    10. <modelVersion>4.0.0modelVersion>
    11. <artifactId>stockartifactId>
    12. <dependencies>
    13. <dependency>
    14. <groupId>org.springframework.bootgroupId>
    15. <artifactId>spring-boot-starter-webartifactId>
    16. dependency>
    17. <dependency>
    18. <groupId>com.alibaba.cloudgroupId>
    19. <artifactId>spring-cloud-starter-alibaba-nacos-discoveryartifactId>
    20. dependency>
    21. dependencies>
    22. project>

    3.2、application.yml配置文件

    1. server:
    2. port: 8081 #服务端口
    3. spring:
    4. cloud:
    5. nacos:
    6. discovery:
    7. server-addr: 127.0.0.1:8848 #nacos服务地址
    8. application:
    9. name: stock-server #服务命称

    3.3、服务代码

    1. @RestController
    2. @RequestMapping("stock")
    3. public class StockController {
    4. SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    5. /**
    6. * 无参数
    7. * @return
    8. */
    9. @RequestMapping("reduce")
    10. public String reduce(){
    11. return "库存减一 "+dateFormat.format(new Date());
    12. }
    13. /**
    14. * 多个参数
    15. * @param orderId
    16. * @return
    17. */
    18. @RequestMapping("reduce1")
    19. public String reduce1(@RequestParam("orderId")String orderId){
    20. return "orderId="+orderId+",库存减一 "+dateFormat.format(new Date());
    21. }
    22. /**
    23. * 参数为map
    24. * @param map
    25. * @return
    26. */
    27. @RequestMapping("reduce2")
    28. public String reduce2(@RequestBody Map map){
    29. return "orderId="+map.get("orderId")+",库存减一 "+dateFormat.format(new Date());
    30. }
    31. }

    四、order模块

    4.1、pom依赖与stock引入的一样

    4.2、application.yml配置文件

    1. server:
    2. port: 8080 #服务端口
    3. spring:
    4. cloud:
    5. nacos:
    6. discovery:
    7. server-addr: 127.0.0.1:8848 #nacos服务地址
    8. application:
    9. name: order-server #服务命称

    4.3、初始化RestTemplate,需要添加 @LoadBalanced 注解,配置负载均衡策略

    1. @Configuration
    2. public class RestTemplateConfig {
    3. @Bean
    4. @LoadBalanced
    5. public RestTemplate restTemplate(RestTemplateBuilder builder){
    6. return builder.build();
    7. }
    8. }

    4.4、使用RestTemplate调用stock服务

    1. @RestController
    2. @RequestMapping("order")
    3. public class OrderController {
    4. @Autowired
    5. RestTemplate restTemplate;
    6. @RequestMapping("add")
    7. public String add(){
    8. String result = restTemplate.getForObject("http://stock-server/stock/reduce", String.class);
    9. String result1 = restTemplate.getForObject("http://stock-server/stock/reduce1?orderId={1}", String.class,"100");
    10. Map map = new HashMap();
    11. map.put("orderId",100);
    12. String result2 = restTemplate.getForObject("http://stock-server/stock/reduce1?orderId={orderId}",String.class, map);
    13. String result3 = restTemplate.postForObject("http://stock-server/stock/reduce2", map,String.class);
    14. return result+"----"+result1+"----"+result2+"----"+result3;
    15. }
    16. }

    五、启动两个服务可以在nacos中看到两个服务注册成功

     六、访问http://localhost:8080/order/add

  • 相关阅读:
    算法通过村第十二关-字符串|青铜笔记|隐形的王者
    LeetCode 1334. 阈值距离内邻居最少的城市:多次运用单源最短路的迪杰斯特拉算法
    c++11日期和时间工具-(std::chrono::system_clock)
    《从零开始学架构》读书笔记(上)
    ST-LINK 下载器的使用
    程序和进程
    C语言函数
    项目经理必看!用一句话说明你当过项目经理
    springboot整合flink(二)
    解决Devops部署Java应用中文乱码
  • 原文地址:https://blog.csdn.net/chenguixu/article/details/127950148