• 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

  • 相关阅读:
    DuDuTalk:4G语音工牌,如何实现家庭上门维修服务过程的智能化管理?
    Windows中将tomcat以服务的形式安装,然后在服务进行启动管理
    2022年湖北省住建厅特种作业操作证怎么报考?甘建二
    C#学习 - 方法的定义、调用、调试
    ant-design国际化扩展新语言
    iOS逆向:工具安装
    使用kepware配置opcua服务端,并使用UaExpert作为opc客户端进行连接
    vue生成动态表单
    go操作Kafka
    [ Linux ] Linux调试器--gdb使用
  • 原文地址:https://blog.csdn.net/chenguixu/article/details/127950148