首页 > 其他分享 >四、Spring Cloud Alibaba项目,测试模块之生产者与消费者

四、Spring Cloud Alibaba项目,测试模块之生产者与消费者

时间:2022-08-25 18:04:00浏览次数:136  
标签:String service spring nacos Alibaba 订单 Spring public Cloud

1、模块说明

生产者:service-order

消费者:service-user

说明:消费者user调用生产者order,调用订单服务

 

2、生产者

pom文件

<?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.shiwn</groupId>
        <artifactId>spring-cloud-alibaba</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>

    <groupId>com.shiwn</groupId>
    <artifactId>service-order</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>service-order</name>
    <description>生产者-订单服务</description>

    <dependencies>
        <!-- 公共依赖-->
        <dependency>
            <groupId>com.shiwn</groupId>
            <artifactId>service-common</artifactId>
            <version>0.0.1-SNAPSHOT</version>
            <scope>compile</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

 配置文件

# 应用服务 WEB 访问端口
server.port=8030

# 应用名称(nacos会将应用名称当作服务名称)
spring.application.name=service-order

# nacos认证信息
spring.cloud.nacos.discovery.username=nacos
spring.cloud.nacos.discovery.password=nacos
# nacos 服务发现与注册配置,其中子属性 server-addr 指定 Nacos 服务器主机和端口
spring.cloud.nacos.discovery.server-addr=192.168.1.206:8848
# 注册到 nacos 的指定 namespace,默认为 public
spring.cloud.nacos.discovery.namespace=public

 controller

@RestController
@RequestMapping("/order")
public class OrderController {
    @Value("${server.port}")
    private String port;

    /**
     * 新增订单
     *
     * @return
     */
    @RequestMapping("/add")
    public String add() {
        System.out.println("新增订单成功");
        return "订单服务-新增订单成功 - 端口:" + port;
    }

    /**
     * 取消订单
     *
     * @return
     */
    @RequestMapping("/cancel")
    public String cancel() {
        System.out.println("取消订单成功");
        return "订单服务-取消订单成功 - 端口:" + port;
    }
}

 

3、消费者

pom文件

<?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.shiwn</groupId>
        <artifactId>spring-cloud-alibaba</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>

    <groupId>com.shiwn</groupId>
    <artifactId>service-user</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>service-user</name>
    <description>消费者-用户服务</description>

    <dependencies>
        <!-- 公共依赖-->
        <dependency>
            <groupId>com.shiwn</groupId>
            <artifactId>service-common</artifactId>
            <version>0.0.1-SNAPSHOT</version>
            <scope>compile</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

 配置文件

# 应用服务 WEB 访问端口
server.port=8031

# 应用名称(nacos会将应用名称当作服务名称)
spring.application.name=service-user

# nacos认证信息
spring.cloud.nacos.discovery.username=nacos
spring.cloud.nacos.discovery.password=nacos
# nacos 服务发现与注册配置,其中子属性 server-addr 指定 Nacos 服务器主机和端口
spring.cloud.nacos.discovery.server-addr=192.168.1.206:8848
# 注册到 nacos 的指定 namespace,默认为 public
spring.cloud.nacos.discovery.namespace=public

 controller

@RestController
@RequestMapping("/user")
public class UserController {
    @Value("${server.port}")
    private String port;

    @Autowired
    private RestTemplate restTemplate;

    @RequestMapping("/addOrder")
    public String addOrder() {
        String url = "http://service-order/order/add";
        String apiReqResult = restTemplate.getForObject(url, String.class);
        return "用户服务-新增订单成功:" + apiReqResult;
    }

    @RequestMapping("/cancelOrder")
    public String cancelOrder() {
        String url = "http://service-order/order/cancel";
        String apiReqResult = restTemplate.getForObject(url, String.class);
        return "用户服务-取消订单成功:" + apiReqResult;
    }
}

RestTemplate配置

RestTemplate 是 Spring 对HttpClient 的封装,提供了一系列方便易用的 API。可直接使用微服务名称进行调用

@Configuration
public class RestConfig {
    @Bean
    @LoadBalanced   //开启ribbon
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }
}

 

4、更新父工程pom

    <modules>
        <module>service-nacos</module>
        <module>service-common</module>
        <module>service-order</module>
        <module>service-user</module>
    </modules>

 

5、多生产者

 使用ribbon的负载均衡进行多生产者测试。      

(1)在idea中复制服务

(2)填写参数(二选一)

// 方式一
VM options: -Dserver.port=8040
// 方式二
Program arguments: --server.port=8040

(3)启动服务,查看nacos

(4)调用测试

地址:

  http://ip:8031/user/addOrder

结果:

用户服务-新增订单成功:订单服务-新增订单成功 - 端口:8030
用户服务-新增订单成功:订单服务-新增订单成功 - 端口:8040
用户服务-新增订单成功:订单服务-新增订单成功 - 端口:8030
...
默认使用轮询算法

注:

  第一次调用时,可能会比较慢,因为要初始化ribbon的负载均衡器(懒加载)。

标签:String,service,spring,nacos,Alibaba,订单,Spring,public,Cloud
From: https://www.cnblogs.com/shiblog/p/16624844.html

相关文章

  • 【文件下载】SpringBoot文件下载
    1.将文件以流的形式一次性读取到内存,通过响应输出流输出到前端/***@parampath想要下载的文件的路径*@paramresponse*@功能描述下载文件:*/@RequestMapping("......
  • SpringBoot修改启动端口server.port方式
     springboot服务修改端口的方式1、修改application.yml文件这是最简单的方式 2、以jdk参数方式启动java-Dserver.port=3000-jarxx.jar 3、启动参数java......
  • Springboot接入xxl-job
    环境springboot:2.7.2xxl-job-admin:2.3.0xxl-job:2.3.1搭建xxl-job-admin初始化数据库脚本:xxl-job/tables_xxl_job.sqlatmaster·xuxueli/xxl-job(github.com)使......
  • 6、spring注解+springMVC注解+Mybatis注解+log4j+idea+maven
    1、项目结构如下 2、编辑pom.xml文件配置依赖1<?xmlversion="1.0"encoding="UTF-8"?>23<projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi......
  • SpringBoot利用@Async注解实现异步调用
    前言:异步编程是让程序并发运行的一种手段,使用异步编程可以大大提高我们程序的吞吐量,减少用户的等待时间。在Java并发编程中实现异步功能,一般是需要使用线程或者线程池。而......
  • SpringBoot 解析 Html
    使用JSOUP来解析Html网页从网上搜了搜看了下大部分的排版都不是特别好!!!所以我从新写一个。点击进入JSOUP的官网jsoup:JavaHTML解析器jsoup是一个用于处理真实世界H......
  • Spring Gateway网关配置yml文件
    server:port:9000spring:application:name:gatewaycloud:nacos:discovery:#网关也是微服务的一部分所以也要注册到nacos......
  • 解决 cmd 运行spring boot项目提示没有主清单属性
    在编写dockerfile文件中最后的CMD命令报错,把命令拿出来单独跑了一下,发现是打包的时候没有配置主类 百度了一下,解决方案如下所示:https://blog.csdn.net/weixin_49736959/......
  • springboot中Filter的使用
    1.bean注入过滤器@BeanpublicFilterRegistrationBeancompanyUrlFilterRegister(){FilterRegistrationBeanregistration=newFilterRegistrationBea......
  • Spring Cloud 的 Feign 调用,即参数传递
    在启动类上添加@EnableFeignClients注解Feignclient类的编写,以及接参方式,特别关注get的两种方式:url路径参数和发送对象实体。参考地址/****@authorLambert*@......