当前位置: 首页 > news >正文

RabbitMQ快速上手

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

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

他将信息发送给服务端中间件。在由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: guestusername: guestport: 5672host: 192.168.79.133
#    设置每次只处理一条信息。不浪费时间listener:simple:prefetch: 1

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

@Configuration
public class RabbitMQConfig {//声明推送的队列名private String simplename = "spring.lz.queue";/*** 创建一个队列对象,** @return*/@Beanpublic Queue simpleQueue() {return new Queue(simplename);}
}

下面是一对一的消息发送

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

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

@RestController
public class SendController {//使用定义的模板类来完成操作@Resourceprivate 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.lryc.cn/news/291548.html

相关文章:

  • SpringBoot activemq收发消息、配置及原理
  • 视频智能识别安全帽佩戴系统-工地安全帽佩戴识别算法---豌豆云
  • 指针的深入理解(三)
  • 【Linux C | 网络编程】详细介绍 “三次握手(建立连接)、四次挥手(终止连接)、TCP状态”
  • 主从数据库MySQL服务重启步骤与注意事项
  • netlink学习
  • 地理空间分析10——空间数据分析中的地理编码与Python
  • 使用“快速开始”将数据传输到新的 iPhone 或 iPad
  • 计算机网络(第六版)复习提纲13
  • [office] excel2010双向条形图制作 #经验分享#微信
  • 优雅管理多线程异步任务 - 永动异步任务
  • 软考笔记--分布式数据库
  • vue项目中路由懒加载的三种方式
  • 【制作100个unity游戏之23】实现类似七日杀、森林一样的生存游戏6(附项目源码)
  • Cache Lab:Part A【模拟出使用LRU策略的高速缓存存储器组织结构】
  • 操作系统基础:死锁
  • Ubuntu server如何使用 Daphne + Nginx + supervisor部署 Django
  • Android 12.0 应用中监听系统收到的通知
  • SpringBoot+Redis如何实现用户输入错误密码后限制登录(含源码)
  • kotlin中的初始化问题纪录
  • Web中的转发与重定向
  • 交叉注意力融合时域、频域特征的FFT + CNN-Transformer-CrossAttention轴承故障识别模型
  • STM32读取MPU6050数据并通过角度值控制舵机运动(STM32、GY-521 MPU6050、SG90舵机、MG946舵机)
  • Unity_Playable工具使用
  • Flutter canvas 画一条波浪线 进度条
  • Java技术栈 —— Spring MVC 与 Spring Boot
  • 跟着cherno手搓游戏引擎【16】Camera和Uniform变量的封装
  • 微服务中间件 RabbitMq学习
  • 3D Gaussian Splatting-实时辐射场渲染技术
  • vue中nextTick()