RabbitMQ快速上手

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

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

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

服务器会监听消息。

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

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

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

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

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

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

那如何部署上手呢

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

XML 复制代码
   <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.因为使用了虚拟机的端口,这里需要配置端口信息等

XML 复制代码
#该测试模块的端口号
server:
  port: 8080

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

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

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

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

下面是一对一的消息发送

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

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

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

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

5,设置监听器

java 复制代码
@Component
public class SimpleListener {

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

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

MQ有多种方式分别为:

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

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

交换机模式:

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

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

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

相关推荐
ZHOU西口7 分钟前
微服务实战系列之玩转Docker(十八)
分布式·docker·云原生·架构·数据安全·etcd·rbac
zmd-zk17 分钟前
kafka+zookeeper的搭建
大数据·分布式·zookeeper·中间件·kafka
Mephisto.java40 分钟前
【大数据学习 | kafka高级部分】kafka中的选举机制
大数据·学习·kafka
南宫生1 小时前
贪心算法习题其三【力扣】【算法学习day.20】
java·数据结构·学习·算法·leetcode·贪心算法
武子康2 小时前
大数据-212 数据挖掘 机器学习理论 - 无监督学习算法 KMeans 基本原理 簇内误差平方和
大数据·人工智能·学习·算法·机器学习·数据挖掘
使者大牙2 小时前
【大语言模型学习笔记】第一篇:LLM大规模语言模型介绍
笔记·学习·语言模型
As977_3 小时前
前端学习Day12 CSS盒子的定位(相对定位篇“附练习”)
前端·css·学习
ajsbxi3 小时前
苍穹外卖学习记录
java·笔记·后端·学习·nginx·spring·servlet
Rattenking3 小时前
React 源码学习01 ---- React.Children.map 的实现与应用
javascript·学习·react.js
dsywws3 小时前
Linux学习笔记之时间日期和查找和解压缩指令
linux·笔记·学习