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有多种方式分别为:

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

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

交换机模式:

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

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

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

相关推荐
李小星同志40 分钟前
高级算法设计与分析 学习笔记6 B树
笔记·学习
霜晨月c1 小时前
MFC 使用细节
笔记·学习·mfc
小江湖19941 小时前
元数据保护者,Caesium压缩不丢重要信息
运维·学习·软件需求·改行学it
dot.Net安全矩阵1 小时前
.NET内网实战:通过命令行解密Web.config
前端·学习·安全·web安全·矩阵·.net
海里真的有鱼2 小时前
Spring Boot 项目中整合 RabbitMQ,使用死信队列(Dead Letter Exchange, DLX)实现延迟队列功能
开发语言·后端·rabbitmq
喜欢猪猪2 小时前
深度解析ElasticSearch:构建高效搜索与分析的基石原创
分布式
微刻时光2 小时前
Redis集群知识及实战
数据库·redis·笔记·学习·程序人生·缓存
蘑菇蘑菇不会开花~3 小时前
分布式Redis(14)哈希槽
redis·分布式·哈希算法
问道飞鱼4 小时前
分布式中间件-Pika一个高效的分布式缓存组件
分布式·缓存·中间件
潮汐退涨月冷风霜4 小时前
机器学习之非监督学习(四)K-means 聚类算法
学习·算法·机器学习