54.RabbitMQ快速实战以及核心概念详解

MQ

MQ:MessageQueue,消息队列。这东西分两个部分来理解:

队列,是一种FIFO 先进先出的数据结构。

消息:在不同应用程序之间传递的数据。将消息以队列的形式存储起来,并且在不同的应用程序之间进行传递,这就成了MessageQueue

MQ的优缺点

  • 系统可用性降低
    • 一旦MQ宕机,对业务会产生影响。这就需要考虑如何保证MQ的高可用。
  • 系统复杂度提高
    • 会变为异步调用,数据的链路就会变得更复杂
    • 比如:消息如何高效存储、如何定期维护、如何监控、如何溯源等等。
  • 消息安全性问题
    • 比如如何快速保存海量消息?如何保证消息不丢失?不被重复处理?怎么保证消息的顺序性?如何保证消息事务完整等问题

几大主流MQ产品特点比较

这里的优缺点并不是绝对的,因为每个产品都在不管演进。比如Kafka现在基本可以做到数据不丢失。RabbitMQ的Stream队列就是模拟Kafka的实现机制,消息吞吐量也提升了非常多。另外也还有很多新的MQ产品体现了更强大的竞争力,比如Pulsar。

优点 缺点 使用场景
kafka 吞吐量非常大, 性能非常好, 集群高可用。 会丢数据。 功能单一。 日志分析 大数据采集
RabbitMQ 消息可靠性高 功能全面 吞吐量比较低 消息积累会影响性能 erlang语言不好定制 小规模场景
RocketMQ 高吞吐,高性能,高可用,功能全面 开源版功能不如云上版 官方文档简单 客户端只支持java 几乎全场景

关于RabbitMQ

RabbitMQ的历史可以追溯到2006年,是一个非常老牌的MQ产品,使用非常广泛。官网地址 https://www.rabbitmq.com/

安装RabbitMQ服务

shell 复制代码
#Docker安装

docker run -it --rm --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:3.11-management

RabbitMQ中的核心概念总结

Producer -------- Connection ---------》 RabbitMQ Server 《-------- Connection --------- Consumer

  • RabbitMQ Server的服务器称为Broker
    • RabbitMQ集群中划分出多个virtual host
  • 客户端与RabbitMQ进行交互,首先就需要建立一个TPC连接,这个连接就是Connection。
    • 一旦客户端与RabbitMQ建立了连接,就会分配一个AMQP信道 Channel。
    • RabbitMQ为了减少性能开销,也会在一个Connection中建立多个Channel。
  • 消息发送到RabbitMQ中后,会首先进入一个交换机,然后由交换机负责将数据转发到不同的队列中。
    • 交换机多用来与生产者打交道。生产者发送的消息通过Exchange交换机分配到各个不同的Queue队列上,而对于消息消费者来说,通常只需要关注自己感兴趣的队列就可以了。
  • 队列 Queue
    • Queue是实际保存数据的最小单位
    • Queue不需要Exchange也可以独立工作
    • 增加Exchange实现更复杂的消息分配策略。
相关推荐
czlczl200209259 小时前
XA分布式事务
分布式
笨手笨脚の13 小时前
分布式系统的本质是什么
分布式
czlczl2002092514 小时前
Zookeeper
分布式·zookeeper·云原生
布吉岛的石头15 小时前
分库分表实战:Sharding-JDBC 快速落地
分布式·mysql
晓庆的故事簿20 小时前
JAVA搭配RabbitMQ使用
java·rabbitmq·java-rabbitmq
渔民小镇20 小时前
4 行代码接入 Spring —— ionet 的生态融合之道
java·服务器·分布式·游戏
苍煜21 小时前
Kafka vs RocketMQ 生产环境选型指南
分布式·kafka·rocketmq
m0_716255001 天前
第二部分 电商离线数仓 全套项目代码(可直接在你伪分布式 Hive 运行)
hive·hadoop·分布式
旷世奇才李先生1 天前
Spring Cloud Alibaba 2026微服务全栈实战:服务治理\+流量控制\+分布式事务
分布式·微服务·架构
Amy187021118231 天前
虚拟电厂为什么必须“牵手”微电网?答案全在这里
分布式·安全·能源