RabbitMQ基础知识

1.RabbitMQ介绍

RabbitMQ是基于Erlang语言开发的开源消息通信中间件,是一个高性能的异步通讯组件

官网地址:RabbitMQ官网

2.MQ技术对比

RabbitMQ ActiveMQ RocketMQ Kafka
公司 Rabbit Apache 阿里 Apache
开发语言 Erlang Java Java Scala&Java
协议支持 AMQP、XMPP、SMTP、STOMP OpenWire、STOMP、REST、XMPP、AMQP 自定义协议 自定义协议
可用性 一般
单机吞吐量 一般 非常高
消息延迟 微妙级 毫秒级 毫秒级 毫秒以内
消息可靠性 一般 一般

3.RabbitMQ的整体架构及核心概念

(1)消息发送者(publisher)

(2)消息消费者(consumer)

(3)队列(queue):存储消息

(4)交换机(exchange):负责路由和转发消息

(5)虚拟主机(Virtual host):实现数据隔离

4.work Queues(任务模型)

(1)模型作用

就是让多个消费者绑定到一个队列,共同消费队列中的消息,可以加快消息处理速度
(2)模型规则

同一条消息只会被一个消费者处理
(3)模型设置

默认情况下,RabbitMQ会将消息一次轮询投递给绑定在队列上的每一个消费者。但这并没有考虑到消费者是否已经处理完消息,可能出现消息堆积。因此我们需要修改配置文件,设置preFetch值为1,确保同一时刻最多投递给消费者1条消息

yaml 复制代码
spring:
    # RabbitMQ相关配置
  rabbitmq:
    # 配置虚拟主机名称
    virtual-host: system1
    # RabbitMQ管理端口号:15672;服务端口号:5672
    port: 5672
    # 配置使用者的名称和密码
    username: guest
    password: guest
    # 配置消费者信息
    listener:
      simple:
        # 设置每个监听者只能获取一条消息,处理完成才能获取下一条消息;作用:能者多劳
        prefetch: 1
        
相关推荐
麦兜*10 小时前
深入解析现代分布式事务架构:基于Seata Saga模式与TCC模式实现金融级高可用与数据最终一致性的工程实践全解析
分布式·金融·架构
難釋懷11 小时前
分布式锁-redission功能介绍
分布式
only-qi14 小时前
微服务场景下,如何实现分布式事务来保证一致性?
分布式·微服务·架构
m0_5648768415 小时前
Distributed data parallel (DDP)分布式训练
分布式
BYSJMG16 小时前
计算机毕设选题推荐:基于Hadoop的交通事故数据可视化分析系统
大数据·vue.js·hadoop·分布式·后端·信息可视化·课程设计
野犬寒鸦16 小时前
从零起步学习并发编程 || 第三章:JMM(Java内存模型)详解及对比剖析
java·服务器·开发语言·分布式·后端·学习·spring
虫小宝18 小时前
查券返利机器人的异步任务调度:Java XXL-Job+Redis实现海量查券请求的分布式任务分发
java·redis·分布式
yq19820430115619 小时前
构建高可用资源导航平台:基于Django+Scrapy的分布式架构实践
分布式·scrapy·django
你这个代码我看不懂20 小时前
Kafka常见问题解答
分布式·kafka
Tony Bai20 小时前
Git 即数据库:Beads (bd) —— 专为 AI Agent 打造的分布式任务追踪引擎
数据库·人工智能·分布式·git