代码编织梦想

背景

之前项目里使用过rabbitmq,但是没有系统的总结过,今天就专门总结一下rabbitmq的好处和意义,并且附上一个小例子。展示一下rabbitMq的简单应用

相关知识

概念:什么是MQ

MQ(Message Queue)消息队列。队列是一种基础的数据结构。具有先进先出的特性,用队列来实现消息的传递。生产者生产消息,将消息放入队列。消费者从队列取出消息(服务端推送,或者订阅),进行消费。
在这里插入图片描述

MQ的优缺点

MQ有三大优点:

  1. 解耦
    如果我们一个业务需要依赖多个模块共同实现。利用MQ,我们只需要在主业务完成之后发送一条MQ消息即可。主业务和其他业务之间,没有强耦合关系。
  2. 异步
    主业务执行完毕之后,就可以返回给前端。从业务进行异步执行,没有必要让用户进行等待。降低业务响应时间,提升用户的体验。
  3. 削峰
    高并发的情况下,通过队列来存储消息,消息对应的业务异步进行处理,避免在流量峰值到来的时候造成系统瘫痪。
    MQ有三大缺点:
  4. 系统依赖的服务多。
  5. 系统复杂性提高。(消息丢失?消息重复消费?消息顺序?)
  6. 业务一致性。主业务与从业务是否一致

如何使用rabbitmq

这里我们就实现简单的在springCloud项目中使用rabbitMq的例子。

  1. 引入依赖
        <!--        amqp依赖,包含RabbitMQ-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-amqp</artifactId>
        </dependency>
  1. 添加rabbitMq配置
    在这里插入图片描述

  2. 编写消息生产者
    在这里插入图片描述

  3. 编写消息消费者
    在这里插入图片描述

  4. 测试
    提供一个test接口用来测试

    @Autowired
    private SpringMqProduceTest springMqProduceTest;
    
    @GetMapping("testMq/{message}")
    public String testMq(@PathVariable("message") String message){
        springMqProduceTest.testSimpleQueue("testMq",message);
        return "已发送:"+message;
    }

执行效果:
调用接口
在这里插入图片描述
控制台输出
在这里插入图片描述

总结&提升

通过总结rabbitMQ的使用,体会MQ消息队列的作用,通过这个队列可以让我们代码耦合度更小。理解MQ的好处才能在以后的工作中更好的使用这门技术。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/hlzdbk/article/details/129611183

RabbitMQ消息中间件快速入门-爱代码爱编程

文章目录 一、同步和异步通讯1. 同步通讯2. 异步通讯二、RabbitMQ1. MessageQueue对比2. RabbitMQ快速入门【1】安装与启动【2】基本结构3. 五种消息模型介绍【1】入门案例1)publisher实现2)consumer实现4. SpringAMQP实现【1】Basic Queue 基本消息队列1)消息发送2)消息接

RabbitMQ-Java-01-简单队列-爱代码爱编程

说明 RabbitMQ-Java-01-简单队列本案例是一个Maven项目官方文档已包含绝大多数本案例内容。请移步:https://docs.spring.io/spring-amqp/docs/current/reference/html/操作步骤 》安装RabbitMQ 可自行安装,也可参考我的相关教程(CentOS7离线安装RabbitMq),

RabbitMQ-Java-02-工作队列-爱代码爱编程

说明 RabbitMQ-Java-02-工作队列本案例是一个Maven项目假设你已经实现了上一节简单队列官方文档已包含绝大多数本案例内容。请移步:https://docs.spring.io/spring-amqp/docs/current/reference/html/核心概念 》原理 执行资源密集型任务时往往有多个队列,每个队列有多个工作线程去处

rabbitmq-死信队列_liudachu的博客-爱代码爱编程

概述 DLX,全称为Dead-Letter-Exchange , 可以称之为死信交换机,也有人称之为死信邮箱。当消息在一个队列中变成死信(dead message)之后,它能被重新发送到另一个交换机中,这个交换机就是

spring-rabbitmq 生产者消息确认案例分析_余数kl的博客-爱代码爱编程

目录 测试环境Springboot 集成 RabbitMQ案例准备案例测试一、不开启消息确认案例一(推送到Exchange并路由到Queue)测试案例二(推送到Exchange,但没有被路由到Queue)测试案例三(

rabbitmq-死信队列、延迟队列(原生+springboot+插件实现)_萌萌虎儿的博客-爱代码爱编程

目录 一、死信队列 1.1 概念 1.2 来源 1.3 演示 二、延迟队列 2.1 TTL-消息最大存活时间 2.2 在SpringBoot中演示延迟队列与死信队列 2.2.1 基本演示 2.2.2 优化-动态设置TTL 2.2.3 使用插件实现延迟队列 2.3 总结 一、死信队列 1.1 概念        死信顾名思义

spring-rabbitmq 消费者消息确认案例实践_余数kl的博客-爱代码爱编程

文章目录 消费者消息确认模式分类代码实现模式一、NONE模式二、MANUALchannel.basicAck 确认一个或多个消息channel.basicNack 拒绝一个或多个消息模式三、AUTO

【springcloud-微服务系列(八)rabbitmq消息队列详解】_清风ikl的博客-爱代码爱编程

RabbitMQ 文章目录 RabbitMQ消息队列的概念消息队列的作用1. 解耦2. 异步:3. 削峰 RabbitMQ的优势主流的消息队列安装配置过程基本概念RabbitMQ的优缺点基本使用用户虚拟主机队

rabbitmq--基础--5.1--部署--命令_单身贵族男的博客-爱代码爱编程

RabbitMQ–基础–5.1–部署–命令 1、常用命令 1.1、查看状态 rabbitmqctl status 显示 Broker 的状态,比如当前 Erlang 节点上运行的应用程序、RabbitMQ/E

rabbitmq初步到精通-第七章-rabbitmq之延迟队列_mr-昊哥的博客-爱代码爱编程

目录 第七章-RabbitMQ之延迟队列 1. 延迟队列概念 2. 应用场景 3. 架构模式 3.1 队列TTL实现 3.2 消息TTL实现 3.3 插件实现 4. 代码验证 5. 总结 第七章-RabbitMQ之延迟队列 1. 延迟队列概念 延迟-意即 非实时,之前我们讨论大部分的案例都是生产者将消息发送至Bro

以go rabbitmq为例子--用最少的时间最好的掌握消息队列_胡桃姓胡,蝴蝶也姓胡的博客-爱代码爱编程

为什么要使用消息队列? 流量削峰 举个例子,如果订单系统最多能处理一万次订单,这个处理能力应付正常时段的下单时绰绰有余,正常时段我们下单一秒后就能返回结果。但是在高峰期,如果有两万次下单操作系统是处理不了的,只能限制订单

linux消息中间件-rabbitmq_西红柿炒鸡蛋面的博客-爱代码爱编程

Linux消息中间件-RabbitMQ 消息中间件 MQ简介 MQ 全称为Message Queue, 消息队列。是一种应用程序对应用程序的通信方法。应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专

【黑马-爱代码爱编程

持续学习&持续更新中… 守破离 【黑马-SpringCloud技术栈】【09】消息队列—RabbitMQ_SpringAMQP 初识MQ同步和异步通讯同步调用异步调用如何选 什么是M

rabbitmq 学习(四)-爱代码爱编程

文章目录 RabbitMQ 学习(四)---- 工作队列模式(1)公平竞争机制(2)能者多劳机制autoAck 取消 ,手动确认chanel 传递1条数据 (3) 能者多劳的代码案例1、生产者2、消费者1

rabbitmq-爱代码爱编程

RabbitMQ–扩展–08–Federation 1、介绍 1.1、场景 有些时候,我们的rabbitmq为了容灾,会部署到不同的城市。例如北京部署一台rabbitmq,广州部署一台rabbitmq。其中广州ra

rabbitmq-爱代码爱编程

RabbitMQ–扩展–2.1–性能测试–window.md 1、rabbitmq-perf-test工具 是一个测试吞吐量的性能测试工具基于Java开发的客户端有额外的工具可以输出成HTML图形能够对RabbitM