RabbitMQ快速上手

news2024/11/20 14:33:56

首先他的需求实在什么地方。我美哟明显的感受到。

它给我的最大感受就是脱裤子放屁——多此一举,的感觉。

他将信息发送给服务端中间件。在由MQ服务器发送消息。

服务器会监听消息。

但是它不仅仅局限于削峰填谷和稳定发送信息的功能,它还有其他重要的作用。

  1. 异步通信:MQ 允许发送者将消息发送到队列中,然后接收者可以异步地从队列中获取消息并进行处理。这种异步通信方式可以提高系统的响应性能和并发处理能力。

  2. 解耦:通过使用 MQ,发送者和接收者之间的耦合度可以降低。发送者只需要将消息发送到队列中,而不需要直接与接收者进行通信。这样,发送者和接收者可以独立演化和扩展,而不会相互影响。

  3. 可靠性:MQ 通常提供持久化机制,即使在发送者发送消息后,如果接收者当前不可用,消息也不会丢失。接收者在可用时可以从队列中获取消息并进行处理,确保消息的可靠传递。

  4. 扩展性:通过使用 MQ,可以实现系统的解耦和水平扩展。可以增加多个消费者来处理队列中的消息,从而提高系统的处理能力。

  5. 缓冲能力:MQ 具有缓冲能力,可以处理瞬时的高峰流量。当发送者发送消息的速度超过接收者的处理速度时,消息可以在队列中暂存,避免系统过载。

 那如何部署上手呢

1.首先是导包(这里使用的springboot整合了MQ)

   <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-amqp</artifactId>
    </dependency>

2.因为使用了虚拟机的端口,这里需要配置端口信息等

#该测试模块的端口号
server:
  port: 8080

#连接MQ的配置信息
spring:
  rabbitmq:
    password: guest
    username: guest
    port: 5672
    host: 192.168.79.133
#    设置每次只处理一条信息。不浪费时间
    listener:
      simple:
        prefetch: 1

3.配置Bean实例。这里可以定义队列名称

@Configuration
public class RabbitMQConfig {
    //声明推送的队列名
    private String simplename = "spring.lz.queue";

    /**
     * 创建一个队列对象,
     *
     * @return
     */
    @Bean
    public Queue simpleQueue() {
        return new Queue(simplename);
    }
}

下面是一对一的消息发送

4.使用整合的模板向MQ发送消息

使用整合的工具类明确发送的对象。

@RestController
public class SendController {
    //使用定义的模板类来完成操作
    @Resource
    private RabbitTemplate rabbitTemplate;

    @RequestMapping("/sead")
    public String send() {
        //使用完成发送消息向消息队列
        rabbitTemplate.convertAndSend("spring.lz.queue","new Message()");
        return "success";
    }
}

5,设置监听器

@Component
public class SimpleListener {

    @RabbitListener(queues={"spring.lz.queue"})
    public void demo(){
        System.out.println("您好");
    }
}

前端发送请求后,将消息发送至MQ队列中。监听器在接收消息。

MQ有多种方式分别为:

一对一:一个对应一个监听器

一对多:一个对应两个监听器。两个监听器处理总量相等。(就像等于多了个处理器,分流分走了一半的任务)。一对多相对一对一只多了几个监听器处理消息。一对多默认是轮询的。但是慢的话,就让他慢着不太合适。可以设置配置文件

交换机模式:

 广播:添加了交换机的理念,可以将一份消息多个监听器来重复消费。

定向:可以将消息通过校验密钥,传给”匹配的“密钥的用户(一个)。

通配符:算是定向的加强版,通过交换机的密钥,可以传输信息给指定用户(多个)

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java中的Map和Set

在Java中Map和Set分别是两个不同的接口 对于Set来说&#xff0c;Set上面还有Collection这个接口&#xff0c;而对于Map来说&#xff0c;上面就没有接口了 在这两个接口下面分别实现了一个有序的接口&#xff0c;sortmap和sortset&#xff0c;而在这个接口下面又分别有两个实现…

第4章 python深度学习——(波斯美女)

第4章 机器学习基础 本章包括以下内容&#xff1a; 除分类和回归之外的机器学习形式 评估机器学习模型的规范流程 为深度学习准备数据 特征工程 解决过拟合 处理机器学习问题的通用工作流程 学完第 3 章的三个实例&#xff0c;你应该已经知道如何用神经网络解决分类问题和回归…

【GitHub项目推荐--常见的国内镜像】【转载】

由于国内网络原因&#xff0c;下载依赖包或者软件&#xff0c;对于不少互联网从业者来说&#xff0c;都有不小的挑战&#xff0c;时间浪费在这上边&#xff0c;实在可惜。这个项目介绍了常见依赖&#xff0c;软件的国内镜像&#xff0c;助力大家畅爽编码。 这是一个归纳梳理类…

【GitHub项目推荐--如何构建项目】【转载】

这是一个 138K Star 的开源项目&#xff0c;这个仓库汇集了诸多优质资源&#xff0c;教你如何构建一些属于自己的东西&#xff0c;内容主要分为增强现实、区块链、机器人、编辑器、命令行工具、神经网络、操作系统等几大类别。 开源地址&#xff1a;https://github.com/danist…

(N-141)基于springboot,vue网上拍卖平台

开发工具&#xff1a;IDEA 服务器&#xff1a;Tomcat9.0&#xff0c; jdk1.8 项目构建&#xff1a;maven 数据库&#xff1a;mysql5.7 系统分前后台&#xff0c;项目采用前后端分离 前端技术&#xff1a;vueelementUI 服务端技术&#xff1a;springbootmybatis-plusredi…

Vue2.0+Element实现日历组件

(壹)博主介绍 &#x1f320;个人博客&#xff1a; 尔滨三皮⌛程序寄语&#xff1a;木秀于林&#xff0c;风必摧之&#xff1b;行高于人&#xff0c;众必非之。 (贰)文章内容 1、安装依赖 npm install moment2.29.4 --savenpm install lunar0.0.3 --savenpm install lunar-java…

django 访问后台数据库管理程序报错:CSRF verihcation failed. Request aborted.

解决方案 在 settings.py 最后加上这个 CSRF_TRUSTED_ORIGINS ["https://<你自己 heroku 的项目部署地址>.herokuapp.com" ]注意下面的事项&#xff1a; https 前面和 .com 后面不要带空格&#xff0c;因为你在复制的时候可能引入空格.com 后面不要加斜杠&a…

【新书推荐】3.1节 布尔运算

本节内容&#xff1a;布尔运算&#xff0c;又称为逻辑运算或位运算。 ■布尔代数&#xff1a;and与、or或、not非、xor异或&#xff0c;按位运算。 3.1.1 布尔代数 ■布尔代数与二进制的关系 乔治布尔是一位英国小学数学老师&#xff0c;19世纪最重要的数学家之一。出版了《…

微信小程序开发学习笔记《13》WXS脚本

微信小程序开发学习笔记《13》WXS脚本 博主正在学习微信小程序开发&#xff0c;希望记录自己学习过程同时与广大网友共同学习讨论。建议仔细阅读对应官方文档 一、WXS介绍 WXS ( WeiXin Script)是小程序独有的一套脚本语言&#xff0c;结合WXML&#xff0c;可以构建出页面的…

IMU里程计

前言&#xff1a; IMU里程计和视觉里程计、激光里程计等一样&#xff0c;都可以独立计算里程计信息。求解IMU里程计的步骤可以简单的分为三个模块&#xff1a;IMU运动积分、IMU预积分、IMU初始化。 求解IMU里程计的流程参考自ORB&#xff1a;SLAM3。 IMU运动积分 IMU的运动…

java web mvc-04-Apache Wicket

拓展阅读 Spring Web MVC-00-重学 mvc mvc-01-Model-View-Controller 概览 web mvc-03-JFinal web mvc-04-Apache Wicket web mvc-05-JSF JavaServer Faces web mvc-06-play framework intro web mvc-07-Vaadin web mvc-08-Grails 开源 The jdbc pool for java.(java …

【学网攻】 第(12)节 -- 动态路由(RIP)

系列文章目录 目录 系列文章目录 文章目录 文章目录 前言 一、动态路由是什么&#xff1f; 二、实验 1.引入 总结 文章目录 文章目录 【学网攻】 第(1)节 -- 认识网络【学网攻】 第(2)节 -- 交换机认识及使用【学网攻】 第(3)节 -- 交换机配置聚合端口【学网攻】 第(4…

docker 入门,docker-compose 入门

1,什么是docker Docker 是一个开源的应用容器引擎&#xff0c;基于 Go 语言 并遵从Apache2.0协议开源。 注意他是一个开源得应用容器 引擎 &#xff0c;大家说docker容器&#xff0c;这不准确&#xff0c;应该回答是容器化技术&#xff0c;应用容器引擎。基于go 语言开发的。 …

多维时序 | Matlab实现DBO-GRU蜣螂算法优化门控循环单元多变量时间序列预测

多维时序 | Matlab实现DBO-GRU蜣螂算法优化门控循环单元多变量时间序列预测 目录 多维时序 | Matlab实现DBO-GRU蜣螂算法优化门控循环单元多变量时间序列预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab实现DBO-GRU蜣螂算法优化门控循环单元多变量时间序列预…

万字图解 | 深入揭秘HTTP工作原理

大家好&#xff0c;我是「云舒编程」&#xff0c;今天我们来聊聊计算机网络面试之-(应用层HTTP)工作原理。 文章首发于微信公众号&#xff1a;云舒编程 关注公众号获取&#xff1a; 1、大厂项目分享 2、各种技术原理分享 3、部门内推 前言 想必不少同学在面试过程中&#xff0…

华清远见作业第三十四天——C++(第三天)

思维导图&#xff1a; 题目&#xff1a; 设计一个Per类&#xff0c;类中包含私有成员:姓名、年龄、指针成员身高、体重&#xff0c;再设计一个Stu类&#xff0c;类中包含私有成员:成绩、Per类对象p1&#xff0c;设计这两个类的构造函数、析构函数和拷贝构造函数。 代码&#…

LabVIEW动态数据交换实现数据通信

LabVIEW动态数据交换实现数据通信 介绍了LabVIEW软件在驱动一般多功能接口卡中的应用。LabVIEW作为一种图形化编程平台&#xff0c;被广泛应用于自动测量系统、工业过程自动化等领域。利用LabVIEW驱动实验室中常用的多功能接口卡&#xff0c;以实现数据采集和分析。 系统主要…

通讯录项目(终)

Start And Stick 上一期我们将通讯录的项目的基本功能已经实现&#xff0c;这一篇文章我们将对通讯录进行完善。 目录 Start And Stick 上期回顾&#xff1a; 上期必要代码&#xff1a; 数据打印&#xff1a; 代码讲解&#xff1a; 头部插入数据&#xff1a; 代码讲解&…

黑马程序员-瑞吉外卖-day5

修改实体类 package com.itheima.reggie.entity;import com.baomidou.mybatisplus.annotation.FieldFill; import com.baomidou.mybatisplus.annotation.TableField; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode;i…

常见の算法5

位图 一个int类型32字节&#xff0c;可以表示0-31这32个数出没出现过&#xff0c;出现过1没出现0&#xff0c;再扩大一点搞个数组&#xff0c;就可以表示0-1023出没出现过&#xff0c;一个long类型可储存64位 如何把10位组成的数&#xff0c;第四位由1改成零 package class05…