RABBIT_MQ消息队列

devtools/2024/11/19 7:00:57/

RabbitMq学习

工作原理

组成部分说明:

  • Broker:消息队列服务进程,此进程包括两个部分:Exchange和Queue
  • Exchange:消息队列交换机,按一定的规则将消息路由转发到某个队列,对消息进行过虑。
  • Queue:消息队列,存储消息的队列,消息到达队列并转发给指定的
  • Producer:消息生产者,即生产方客户端,生产方客户端将消息发送
  • Consumer:消息消费者,即消费方客户端,接收MQ转发的消息。

请添加图片描述

消息确认机制(ACK)

RabbitMQ有一个ACK机制。当消费者获取消息后,会向RabbitMQ发送回执ACK,告知消息已经被接收。不过这种回执ACK分两种情况:

  • 自动ACK:消息一旦被接收,消费者自动发送ACK
  • 手动ACK:消息接收后,不会发送ACK,需要手动调用

Springboot整合MQ

依赖

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId><version>2.6.13</version>
</dependency>
server:port: 10200
spring:rabbitmq:host: 10.0.0.177port: 5672username: xxxpassword: xxxvirtual-host: learn

配置类,配一个队列出来

@Configuration
public class RabbitConfig {@BeanQueue simpleQueue(){return new Queue("Learn_MyQueue_test",true);}
}

springboot启动后不断监听mq的消息

@Component
public class HelloConsume {@RabbitListener(queues = "Learn_MyQueue_test")public void receive(String msg){System.out.println("hello receive:"+msg);}
}

使用test单元,模拟发送一条消息

@SpringBootTest
class LearnMqApplicationTests {@AutowiredRabbitTemplate rabbitTemplate;@Testpublic void testSend() {rabbitTemplate.convertAndSend( "Learn_MyQueue_test","生产者发送的消息!");}
}

运行boot后,发送一条消息后,会在boot中监听到这条消息。

上面代码中可以省去配置类,直接声明队列

@RabbitListener(queuesToDeclare = @Queue(name = "Learn_MyQueue_test1"))
public void receive(String msg){System.out.println("hello receive:"+msg);
}

四种交换机

  1. 直接交换机(Direct Exchange)

    • 适用于需要基于路由键精确匹配的场景。
    • 如果接收方不想接收某些消息,可以通过不绑定相应的路由键到队列来实现。
  2. 主题交换机(Topic Exchange)

    • 适用于需要基于模式匹配路由键的场景。
    • 接收方可以通过绑定不同的模式到队列来选择性接收消息,例如使用*#通配符。
  3. 头交换机(Headers Exchange)

    • 适用于需要根据消息的头部属性进行匹配的场景。
    • 接收方可以通过设置不同的头部属性和值来选择性接收消息。
  4. 扇出交换机(Fanout Exchange)

    • 适用于广播消息到所有绑定的队列,不考虑路由键。
    • 接收方可以选择绑定到交换机的队列来接收所有消息,或者不绑定来避免接收。、

交换机例子

配置类,四个交换机,一个主题,四种绑定的方式

import org.springframework.amqp.core.*;

http://www.ppmy.cn/devtools/135148.html

相关文章

【C++】构造与析构函数

目录&#xff1a; 一、 This指针  &#xff08;一&#xff09;使用方法&#xff1a; 二、类的默认成员函数 三、构造函数  &#xff08;一&#xff09;构造函数的特点 四、析构函数 &#xff08;一&#xff09;析构函数的特点 正文 一、 This指针 在c语言中我们调用函…

android 使用MediaPlayer实现音乐播放--基础介绍

Android 多媒体框架支持播放各种常见媒体类型,因此 可轻松地将音频、视频和图片集成到您的应用中。你可以播放音频或 从存储在应用资源(原始资源)的媒体文件(原始资源)中获取独立文件 或从通过网络连接到达的数据流中,所有这些均使用 MediaPlayer API。 java部分代码路径…

工作bug---时间片校验

概括 在日常的业务场景中&#xff0c;新增作为一个普通的操作。当特定的逻辑需要进行校验&#xff0c;例如时有涉及到时间的字段&#xff0c;统一条件下&#xff0c;时间段不能重叠来保证时间的严谨性。那么应该怎么做呢&#xff1f; 解决方案 通过编写sql来进行查询校验&am…

基于正则化算法的SAR图像去噪matlab仿真

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 4.1SAR 图像噪声模型 4.2 正则化算法基本原理 5.完整工程文件 1.课题概述 基于正则化算法的SAR图像去噪matlab仿真&#xff0c;仿真输出SAR图像去噪结果&#xff0c;正则化参数收敛曲线&#xff0c;同时…

【算法】【优选算法】前缀和(下)

目录 一、560.和为K的⼦数组1.1 前缀和1.2 暴力枚举 二、974.和可被K整除的⼦数组2.1 前缀和2.2 暴力枚举 三、525.连续数组3.1 前缀和3.2 暴力枚举 四、1314.矩阵区域和4.1 前缀和4.2 暴力枚举 一、560.和为K的⼦数组 题目链接&#xff1a;560.和为K的⼦数组 题目描述&#x…

5个有效的华为(HUAWEI)手机数据恢复方法

5个有效的手机数据恢复方法 华为智能手机中的数据丢失比许多人认为的更为普遍。发生这种类型的丢失有多种不同的原因&#xff0c;因此数据恢复软件的重要性。您永远不知道您的智能手机何时会在这方面垮台&#xff1b;因此&#xff0c;预防总比哀叹好&#xff0c;这就是为什么众…

腾讯云单元化架构体系介绍

1.背景 自2018年以来,受“华为、中兴事件”影响,我国科技受制于人的现状对国家稳定和经济发展都提出了严峻考验。目前我国IT架构体系严重依赖国外产品,金融行业尤其明显。大部分传统银行的关键账务系统都架设在IBM的大型机、小型机之上,数据库使用Oracle及DB2,存储采用EM…

使用 Prompt API 与您的对象聊天

tl;dr&#xff1a;GET、PUT、PROMPT。现在&#xff0c;可以使用新的 PromptObject API 仅使用自然语言对存储在 MinIO 上的对象进行总结、交谈和提问。在本文中&#xff0c;我们将探讨这个新 API 的一些用例以及代码示例。 赋予动机&#xff1a; 对象存储和 S3 API 的无处不在…