RabbitMQ(四种使用模式)

文章目录

    • 1.Fanout(广播模式)
        • 1.基本介绍
        • 2.需求分析
        • 3.具体实现
          • 1.编写配置类 RabbitMQConfig.java
          • 2.编写生产者,发送消息到交换机 MQSender.java
          • 3.编写消费者,接受消息 MQReceiver.java
          • 4.控制层调用方法,发送信息到交换机
        • 4.启动测试
          • 1.访问查看IDEA控制台输出
            • 1.访问 http://localhost:9092/seckill/mq/exchange
            • 2.查看控制台输出,两个队列同时接受到了消息
          • 2.访问RabbitMQ控制台 http://ip:15672
            • 1.查看交换机是否绑定了两个队列
            • 2.再查看Queues,新增了两个队列
    • 2.Direct(路由模式)
        • 1.基本介绍
        • 2.需求分析
        • 3.具体实现
          • 1.配置类 RabbitMQConfig.java
          • 2.编写生产者,发送消息到交换机并指定路由 MQSender.java
          • 3.编写消费者,接受消息 MQReceiver.java
          • 4.控制层调用方法,发送信息到交换机
        • 4.启动测试
          • 1.访问查看IDEA控制台输出
            • 1.访问 http://localhost:9092/seckill/mq/direct/green
            • 2.访问 http://localhost:9092/seckill/mq/direct/red
          • 2.访问RabbitMQ控制台 http://140.143.164.206:15672
            • 1.交换机绑定了两个队列
            • 2.再查看Queues,新增了两个队列
    • 3.Topic(主题模式)
        • 1.基本介绍
          • 1.介绍
          • 2.关于匹配模式的说明
        • 2.需求分析
        • 3.具体实现
          • 1.配置类 RabbitMQConfig.java
          • 2.编写生产者,发送消息到交换机并指定路由 MQSender.java
          • 3.编写消费者,接受消息 MQReceiver.java
          • 4.控制层调用方法,发送信息到交换机
        • 4.启动测试
          • 1.示意图
          • 2.访问查看IDEA控制台输出
            • 1.访问 http://localhost:9092/seckill/mq/topic/one.orange.one 匹配Q1
            • 2.访问 http://localhost:9092/seckill/mq/topic/one.one.rabbit 匹配Q2
            • 3.访问 http://localhost:9092/seckill/mq/topic/lazy.orange.one 匹配Q1和Q2
            • 4.访问 http://localhost:9092/seckill/mq/topic/lazy.any.any.any.any 匹配Q2
    • 4.Headers(头路由模式,使用较少)
        • 1.基本介绍
        • 2.示意图
        • 3.需求分析
        • 4.具体实现
          • 1.配置类 RabbitMQConfig.java
          • 2.编写生产者,发送消息到交换机并指定路由 MQSender.java
          • 3.编写消费者,接受消息 MQReceiver.java
          • 4.控制层调用方法,发送信息到交换机
        • 5.启动测试
          • 1.访问查看IDEA控制台输出
            • 1.访问 http://localhost:9092/seckill/mq/headers 匹配队列一
            • 2.访问 http://localhost:9092/seckill/mq/headers2 匹配队列二
    • 5.RabbitMQ使用模式总结
        • 1.整体架构图
        • 2.通用使用方式
          • 1.编写RabbitMQ的配置类
          • 2.编写消息发送者
          • 3.编写消息接受者
          • 4.编写控制层

1.Fanout(广播模式)

1.基本介绍

image-20240511143401624

2.需求分析

image-20240511143533335

3.具体实现
1.编写配置类 RabbitMQConfig.java
    // 定义一个交换机,两个队列的名称
    private static final String EXCHANGE = "exchange";
    private static final String QUEUE1 = "queue1";
    private static final String QUEUE2 = "queue2";

    // 创建两个队列和一个交换机
    // 创建队列1
    @Bean
    public Queue queue1() {
        return new Queue(QUEUE1, true);
    }
    // 创建队列2
    @Bean
    public Queue queue2() {
        return new Queue(QUEUE2, true);
    }
    // 创建交换机
    @Bean
    public FanoutExchange exchange() {
        return new FanoutExchange(EXCHANGE);
    }

    // 将队列一和交换机绑定
    @Bean
    public Binding binding1() {
        return BindingBuilder.bind(queue1()).to(exchange());
    }
    // 将队列二和交换机绑定
    @Bean
    public Binding binding2() {
        return BindingBuilder.bind(queue2()).to(exchange());
    }
2.编写生产者,发送消息到交换机 MQSender.java
    // 发送消息到交换机
    public void sendExchange(Object message) {
        log.info("发送消息到交换机: " + message);
        // 发送消息到交换机,需要指定在配置类中配置的交换机名,这里的空字符串表示忽略路由键
        rabbitTemplate.convertAndSend("exchange", "", message);
    }
3.编写消费者,接受消息 MQReceiver.java
    // 两个队列从交换机接受消息
    @RabbitListener(queues = "queue1")
    public void receive1(Object message) {
        log.info("queue1接收消息: " + message);
    }
    // 两个队列从交换机接受消息
    @RabbitListener(queues = "queue2")
    public void receive2(Object message) {
        log.info("queue2接收消息: " + message);
    }
4.控制层调用方法,发送信息到交换机
    // 发送信息到交换机
    @RequestMapping("/mq/exchange")
    @ResponseBody
    public void mqExchange() {
        mqSender.sendExchange("hello rabbitmq exchange");
    }
4.启动测试
1.访问查看IDEA控制台输出
1.访问 http://localhost:9092/seckill/mq/exchange

image-20240511145506791

2.查看控制台输出,两个队列同时接受到了消息

image-20240511145523594

2.访问RabbitMQ控制台 http://ip:15672
1.查看交换机是否绑定了两个队列

image-20240511145927045

image-20240511145938023

2.再查看Queues,新增了两个队列

image-20240511145956152

2.Direct(路由模式)

1.基本介绍

image-20240511150759660

2.需求分析

image-20240511151501711

3.具体实现
1.配置类 RabbitMQConfig.java
    // ----------------- Direct模式 -----------------
    // 定义一个交换机,两个队列的名称
    private static final String DIRECT_EXCHANGE = "directExchange";
    private static final String DIRECT_QUEUE1 = "directQueue1";
    private static final String DIRECT_QUEUE2 = "directQueue2";

    // 定义两个路由分别为red和green
    public static final String RED = "red";
    public static final String GREEN = "green";

    // 创建两个队列和一个交换机
    // 创建队列1
    @Bean
    public Queue directQueue1() {
        return new Queue(DIRECT_QUEUE1, true);
    }

    // 创建队列2
    @Bean
    public Queue directQueue2() {
        return new Queue(DIRECT_QUEUE2, true);
    }

    // 创建Direct交换机
    @Bean
    public DirectExchange directExchange() {
        return new DirectExchange(DIRECT_EXCHANGE);
    }

    // 将队列一和交换机绑定,并指定路由为red
    @Bean
    public Binding directBinding1() {
        return BindingBuilder.bind(directQueue1()).to(directExchange()).with(RED);
    }
    // 将队列二和交换机绑定,并指定路由为green
    @Bean
    public Binding directBinding2() {
        return BindingBuilder.bind(directQueue2()).to(directExchange()).with(GREEN);
    }
    // ----------------- Direct模式 -----------------
2.编写生产者,发送消息到交换机并指定路由 MQSender.java
    // ----------------- Direct模式 -----------------
    // 发送消息到Direct交换机,指定路由键
    public void sendDirect(Object message, String routingKey) {
        log.info("发送消息到Direct交换机: " + message);
        // 发送消息到交换机,需要指定在配置类中配置的交换机名,这里的路由键为 routingKey
        rabbitTemplate.convertAndSend("directExchange", routingKey, message);
    }
    // ----------------- Direct模式 -----------------
3.编写消费者,接受消息 MQReceiver.java
    // ----------------- Direct模式 -----------------
    // directQueue1接收消息
    @RabbitListener(queues = "directQueue1")
    public void receiveDirect(Object message) {
        log.info("directQueue1接收消息: " + message);
    }

    // directQueue2接收消息
    @RabbitListener(queues = "directQueue2")
    public void receiveDirect2(Object message) {
        log.info("directQueue2接收消息: " + message);
    }
    // ----------------- Direct模式 -----------------
4.控制层调用方法,发送信息到交换机
    // ----------------- Direct模式 -----------------
    // 发送消息到Direct交换机,指定路由键
    @RequestMapping("/mq/direct/{routingKey}")
    @ResponseBody
    public void mqDirect(@PathVariable String routingKey) {
        mqSender.sendDirect("hello rabbitmq direct", routingKey);
    }
    // ----------------- Direct模式 -----------------
4.启动测试
1.访问查看IDEA控制台输出
1.访问 http://localhost:9092/seckill/mq/direct/green

image-20240511155350571

2.访问 http://localhost:9092/seckill/mq/direct/red

image-20240511155417490

2.访问RabbitMQ控制台 http://140.143.164.206:15672
1.交换机绑定了两个队列

image-20240511155827225

image-20240511155911603

2.再查看Queues,新增了两个队列

image-20240511155943495

3.Topic(主题模式)

1.基本介绍
1.介绍

image-20240511161221729

2.关于匹配模式的说明
  • 星号:可以匹配一个单词
  • 井号:可以匹配零个或多个单词
2.需求分析

image-20240511161528268

3.具体实现
1.配置类 RabbitMQConfig.java
    // ----------------- Topic模式 -----------------
    // 定义一个交换机,两个队列的名称
    private static final String TOPIC_EXCHANGE = "topicExchange";
    private static final String TOPIC_QUEUE1 = "topicQueue1";
    private static final String TOPIC_QUEUE2 = "topicQueue2";

    // 定义三个路由
    public static final String ROUTING_KEY1 = "*.orange.*";
    public static final String ROUTING_KEY2 = "*.*.rabbit";
    public static final String ROUTING_KEY3 = "lazy.#";

    // 创建两个队列和一个交换机
    // 创建队列1
    @Bean
    public Queue topicQueue1() {
        return new Queue(TOPIC_QUEUE1, true);
    }
    // 创建队列2
    @Bean
    public Queue topicQueue2() {
        return new Queue(TOPIC_QUEUE2, true);
    }
    // 创建Topic交换机
    @Bean
    public TopicExchange topicExchange() {
        return new TopicExchange(TOPIC_EXCHANGE);
    }

    // 将队列一和交换机绑定,并指定路由为*.orange.*
    @Bean
    public Binding topicBinding1() {
        return BindingBuilder.bind(topicQueue1()).to(topicExchange()).with(ROUTING_KEY1);
    }
    // 将队列二和交换机绑定,并指定路由为*.*.rabbit和lazy.#
    @Bean
    public Binding topicBinding2() {
        return BindingBuilder.bind(topicQueue2()).to(topicExchange()).with(ROUTING_KEY2);
    }
    @Bean
    public Binding topicBinding3() {
        return BindingBuilder.bind(topicQueue2()).to(topicExchange()).with(ROUTING_KEY3);
    }
    // ----------------- Topic模式 -----------------

2.编写生产者,发送消息到交换机并指定路由 MQSender.java
    // ----------------- Topic模式 -----------------
    // 发送消息到Topic交换机,指定路由键
    public void sendTopic(Object message, String routingKey) {
        log.info("发送消息到Topic交换机: " + message);
        // 发送消息到交换机,需要指定在配置类中配置的交换机名,这里的路由键为 routingKey
        rabbitTemplate.convertAndSend("topicExchange", routingKey, message);
    }
    // ----------------- Topic模式 -----------------

3.编写消费者,接受消息 MQReceiver.java
    // ----------------- Topic模式 -----------------
    // topicQueue1接收消息
    @RabbitListener(queues = "topicQueue1")
    public void receiveTopic1(Object message) {
        log.info("topicQueue1接收消息: " + message);
    }
    // topicQueue2接收消息
    @RabbitListener(queues = "topicQueue2")
    public void receiveTopic2(Object message) {
        log.info("topicQueue2接收消息: " + message);
    }
    // ----------------- Topic模式 -----------------

4.控制层调用方法,发送信息到交换机
    // ----------------- Topic模式 -----------------
    // 发送消息到Topic交换机,指定路由键
    @RequestMapping("/mq/topic/{routingKey}")
    @ResponseBody
    public void mqTopic(@PathVariable String routingKey) {
        mqSender.sendTopic("hello rabbitmq topic", routingKey);
    }
    // ----------------- Topic模式 -----------------
4.启动测试
1.示意图

image-20240511161528268

2.访问查看IDEA控制台输出
1.访问 http://localhost:9092/seckill/mq/topic/one.orange.one 匹配Q1

image-20240511163348473

2.访问 http://localhost:9092/seckill/mq/topic/one.one.rabbit 匹配Q2

image-20240511163438210

3.访问 http://localhost:9092/seckill/mq/topic/lazy.orange.one 匹配Q1和Q2

image-20240511163527113

4.访问 http://localhost:9092/seckill/mq/topic/lazy.any.any.any.any 匹配Q2

image-20240511163618877

4.Headers(头路由模式,使用较少)

1.基本介绍

image-20240511164450490

2.示意图

image-20240511165737435

3.需求分析

image-20240511170148293

4.具体实现
1.配置类 RabbitMQConfig.java
    // ----------------- Headers模式 -----------------
    // 定义一个交换机,两个队列的名称
    private static final String HEADERS_EXCHANGE = "headersExchange";
    private static final String HEADERS_QUEUE1 = "headersQueue1";
    private static final String HEADERS_QUEUE2 = "headersQueue2";

    // 创建两个队列和一个交换机
    // 创建队列1
    @Bean
    public Queue headersQueue1() {
        return new Queue(HEADERS_QUEUE1, true);
    }
    // 创建队列2
    @Bean
    public Queue headersQueue2() {
        return new Queue(HEADERS_QUEUE2, true);
    }
    // 创建Headers交换机
    @Bean
    public HeadersExchange headersExchange() {
        return new HeadersExchange(HEADERS_EXCHANGE);
    }

    // 将队列一和交换机绑定,并指定key-value,使用any表示只要有一个匹配就可以
    @Bean
    public Binding headersBinding1() {
        Map<String, Object> map = new HashMap<>();
        map.put("key1", "value1");
        map.put("key2", "value2");
        return BindingBuilder.bind(headersQueue1()).to(headersExchange()).whereAny(map).match();
    }

    // 将队列二和交换机绑定,并指定key-value,使用all表示所有的key-value都要匹配
    @Bean
    public Binding headersBinding2() {
        Map<String, Object> map = new HashMap<>();
        map.put("key3", "value3");
        map.put("key4", "value4");
        return BindingBuilder.bind(headersQueue2()).to(headersExchange()).whereAll(map).match();
    }
    // ----------------- Headers模式 -----------------
2.编写生产者,发送消息到交换机并指定路由 MQSender.java
    // ----------------- Headers模式 -----------------
    // 发送消息到Headers交换机,匹配队列一
    public void sendHeaders(Object message) {
        log.info("发送消息到Headers交换机: " + message);
        // 发送消息到交换机,需要指定在配置类中配置的交换机名,这里的空字符串表示忽略路由键
        rabbitTemplate.convertAndSend("headersExchange", "", message, message1 -> {
            message1.getMessageProperties().getHeaders().put("key1", "value1");
            return message1;
        });
    }
    // 发送消息到Headers交换机,匹配队列二
    public void sendHeaders2(Object message) {
        log.info("发送消息到Headers交换机: " + message);
        // 发送消息到交换机,需要指定在配置类中配置的交换机名,这里的空字符串表示忽略路由键
        rabbitTemplate.convertAndSend("headersExchange", "", message, message1 -> {
            message1.getMessageProperties().getHeaders().put("key3", "value3");
            message1.getMessageProperties().getHeaders().put("key4", "value4");
            return message1;
        });
    }
    // ----------------- Headers模式 -----------------
3.编写消费者,接受消息 MQReceiver.java
    // ----------------- Headers模式 -----------------
    // headersQueue1接收消息
    @RabbitListener(queues = "headersQueue1")
    public void receiveHeaders1(Object message) {
        log.info("headersQueue1接收消息: " + message);
    }
    // headersQueue2接收消息
    @RabbitListener(queues = "headersQueue2")
    public void receiveHeaders2(Object message) {
        log.info("headersQueue2接收消息: " + message);
    }
    // ----------------- Headers模式 -----------------
4.控制层调用方法,发送信息到交换机
    // ----------------- Headers模式 -----------------
    // 发送消息到Headers交换机,匹配队列一
    @RequestMapping("/mq/headers")
    @ResponseBody
    public void mqHeaders() {
        mqSender.sendHeaders("hello rabbitmq headers");
    }
    // 发送消息到Headers交换机,匹配队列二
    @RequestMapping("/mq/headers2")
    @ResponseBody
    public void mqHeaders2() {
        mqSender.sendHeaders2("hello rabbitmq headers2");
    }
    // ----------------- Headers模式 -----------------
5.启动测试
1.访问查看IDEA控制台输出
1.访问 http://localhost:9092/seckill/mq/headers 匹配队列一

image-20240511173539342

2.访问 http://localhost:9092/seckill/mq/headers2 匹配队列二

image-20240511173600832

5.RabbitMQ使用模式总结

1.整体架构图

image-20240511173928100

2.通用使用方式
1.编写RabbitMQ的配置类
  • 创建交换机和队列
  • 将队列分别与交换机按照具体标识绑定
2.编写消息发送者
  • 指定交换机
  • 携带消息和具体队列标识
3.编写消息接受者
  • 只需要监听队列,接收消息即可
4.编写控制层
  • 调用消息发送者,向交换机发送请求

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/621650.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

文件流-ASCII文件(中北大学-程序设计基础(2))

目录 题目 源码 结果示例 题目 编写程序实现以下功能&#xff1a;【要求处理ASCII文件】 &#xff08;1&#xff09;按职工号由小到大的顺序将5个员工的数据&#xff08;包括号码、姓名、年龄和工资&#xff09;输出到磁盘文件中保存&#xff1b; &#xff08;2&#xff…

DIFT:Emergent Correspondence from Image Diffusion # 论文阅读

URL https://arxiv.org/pdf/2306.03881 主页&#xff1a;https://diffusionfeatures.github.io/ 代码&#xff1a;https://github.com/Tsingularity/dift TD;DR 23 年 6月 cornell 大学的文章&#xff0c;任务是做图片的特征匹配&#xff08;关联&#xff09;&#xff0c;特…

让 计算机 将 数学 公式 表达式 的计算过程绘制出来 【mathematical-expression(MAE)】

目录 文章目录 目录介绍开始实战引入数学表达式计算库引入流程图代码生成库开始进行生成 介绍 大家好 今天我们来分享一个新知识&#xff0c;将数学表达式的整个计算过程&#xff0c;以及计算繁多结果在 Java 中绘制出来&#xff0c;计算机中的数学表达式计算的功能很常见了&a…

编码器介绍与应用

一.概述 1.编码器 编码器&#xff0c;是一种用来测量机械旋转或位移的传感器。这种传感器能够测量机械部件在旋转或直线运动时的位移位置或速度等信息&#xff0c;并将其转换成一系列电信号。其可和电机组装到一起用&#xff0c;反馈电机方向、转换角度的&#xff0c;然后电机…

2024电商数据资料汇总

2024年跨境电商&#xff1a;连接全球市场的新纪元 随着全球数字化进程的不断推进&#xff0c;跨境电商已经成为了国际贸易的重要组成部分。2024年&#xff0c;跨境电商行业迎来了一系列挑战和机遇&#xff0c;塑造了全新的市场格局。 跨境电商市场规模的持续扩大 2024年&…

基于微信小程序+JAVA Springboot 实现的【马拉松报名系统】app+后台管理系统 (内附设计LW + PPT+ 源码+ 演示视频 下载)

项目名称 项目名称&#xff1a; 马拉松报名系统微信小程序 项目技术栈 该项目采用了以下核心技术栈&#xff1a; 后端框架/库&#xff1a; Java SSM框架数据库&#xff1a; MySQL前端技术&#xff1a; 微信开发者工具、uni-app其他技术&#xff1a; JSP开发技术 项目展示 …

【异常处理】(中北大学-程序设计基础(2))

目录 题目 源码 结果示例 题目 求一元二次方程式ax^2bxc0的实根&#xff0c;如果方程没有实根&#xff0c;则输入有关警告信息。要求&#xff1a;建立一元二次方程类&#xff0c;利用异常技术处理。 源码 #include <iostream> #include <cmath>using namespa…

网络基础-SSH协议(思科、华为、华三)

SSH&#xff08;Secure Shell&#xff09;是一种用于安全远程访问和安全文件传输的协议。它提供了加密的通信通道&#xff0c;使得用户可以在不安全的网络上安全地远程登录到远程主机&#xff0c;并在远程主机上执行命令、访问文件以及传输文件&#xff0c;本篇主要讲解命令执行…

LLM实战:LLM微调加速神器-Unsloth + LLama3

1. 背景 五一结束后&#xff0c;本qiang~又投入了LLM的技术海洋中&#xff0c;本期将给大家带来LLM微调神器&#xff1a;Unsloth。 正如Unsloth官方的对外宣贯&#xff1a;Easily finetune & train LLMs; Get faster with unsloth。微调训练LLM&#xff0c;可以显著提升速…

【JavaEE初阶系列】——博客系统(编写服务器/前后端交互代码)

目录 &#x1f6a9;部署页面需求 &#x1f6a9;准备工作 &#x1f6a9;获取博客列表页 &#x1f6a9;博客详情页 &#x1f6a9;实现登录页面 &#x1f388;强制要求登录 &#x1f388;显示用户信息 &#x1f6a9;退出登录 &#x1f6a9;发布博客 &#x1f6a9;部署页面…

宝塔助手v1.4.1/手机操控云服务器的神器软件

宝塔助手是以宝塔Linux面板提供的API开发的一款可以随时随地管理服务器的APP。通过这款APP你可以随时随地的查看一台或多台服务器的运行情况&#xff0c;对服务器网站、FTP、数据库、文件进行管理。内置文件编辑器&#xff0c;可以对网站文件进行修改。 链接&#xff1a;https:…

三极管 导通条件

一、三极管理解 三极管是电子行业常用的元器件之一&#xff0c;他是一种电流型控制的器件&#xff0c;他有三种工作状态&#xff1a;截止区&#xff0c;放大区、饱和区。当三极管当做开关使用时&#xff0c;他工作在饱和区。下面简短讲解三极管作为开关使用的方法&#xff0c;只…

李飞飞团队关于2024年人工智能发展报告总结 (Artificial Intelligence Index Report)

目录 1 10大核心信息2 AI研究和发展2.1 核心要点2.2 核心对比信息2.3 模型是否会用尽数据2.4 基础模型发展2.5 训练模型成本 3 技术性能3.1 核心要点3.2 重要模型发布情况3.3 AI表现情况3.4 多学科、高难度评估集 (MMMU & GPQA & ARC)3.5 Agents3.6 RLHF & RLAIF3.…

花了3天编制了236份excel财务明细收支报表,自动公式,直接用

财务明细收支报表能够帮助管理者清晰地了解企业的财务状况&#xff0c;及时调整经营策略。财务收支报表也是评估企业偿债能力和盈利能力的重要依据。 一份标准的财务明细收支报表通常包括以下部分&#xff1a;标题、报表期间、收入明细、支出明细、净收入或净支出等。 在制作…

在cmd中,如何使用cd进入指定文件目录

在cmd中&#xff0c;如何使用cd进入指定文件目录 1.要进入的磁盘与当前磁盘一致 例如: cd C:\Program Files (x86)\Google\Chrome\Application 2.进入到其他磁盘&#xff0c; 例如 cd /d D:\JAVA\codes\01\1.4 或者下面的方式&#xff08;直接输入磁盘F&#xff1a;和文件名…

【UE5 C++】基础学习笔记——01 UObject的创建与使用

目录 步骤 一、创建UObject 二、创建基于UObject的蓝图类 三、在UObject中使用变量和函数 步骤 一、创建UObject 在内容浏览器中新建一个C类 父类选择“Object” 类的类型设置为公有&#xff0c;这里就命名为“MyObject”&#xff0c;点击“创建类”来创建头文件和源文…

【联合索引】最左匹配原则是什么?

什么是联合索引 联合索引&#xff08;Composite Index&#xff09;是一种索引类型&#xff0c;它由多个列组成。 MySQL的联合索引&#xff08;也称为复合索引&#xff09;是建立在多个字段上的索引。这种索引类型允许数据库在查询时同时考虑多个列的值&#xff0c;从而提高查询…

SpringCloud 集成 RocketMQ 及配置解析

文章目录 前言一、SpringCloud 集成 RocketMQ1. pom 依赖2. yml 配置3. 操作实体4. 生产消息4.1. 自动发送消息4.2. 手动发送消息 5. 消费消息 二、配置解析1. spring.cloud.stream.function.definition 前言 定义 Spring Cloud Stream 是一个用来为微服务应用构建消息驱动能力…

中国海洋大学整体来说值得报考吗?中国海洋大学考情分析。

中国海洋大学&#xff08;Ocean University of China&#xff09;&#xff0c;简称中国海大。位于中国青岛&#xff0c;是中华人民共和国教育部直属的综合性重点大学&#xff0c;国家“双一流”、“985工程”和“211工程”重点建设高校之一&#xff0c;入选“2011计划”、“111…

迄今为止最全- 前端性能优化

简介 当我们说前端性能优化的时候&#xff0c;指的可能是不同场景的性能优化。前端涉及性能优化的场景主要有&#xff1a; 项目构建性能优化 页面性能优化 加载时性能优化 运行时性能优化 构建性能主要指构建速度&#xff0c;优化方法和打包工具直接相关&#xff0c;主要…