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
        
相关推荐
用户8307196840822 天前
RabbitMQ vs RocketMQ 事务大对决:一个在“裸奔”,一个在“开挂”?
后端·rabbitmq·rocketmq
初次攀爬者3 天前
RabbitMQ的消息模式和高级特性
后端·消息队列·rabbitmq
初次攀爬者5 天前
ZooKeeper 实现分布式锁的两种方式
分布式·后端·zookeeper
让我上个超影吧6 天前
消息队列——RabbitMQ(高级)
java·rabbitmq
塔中妖6 天前
Windows 安装 RabbitMQ 详细教程(含 Erlang 环境配置)
windows·rabbitmq·erlang
断手当码农6 天前
Redis 实现分布式锁的三种方式
数据库·redis·分布式
初次攀爬者6 天前
Redis分布式锁实现的三种方式-基于setnx,lua脚本和Redisson
redis·分布式·后端
业精于勤_荒于稀6 天前
物流订单系统99.99%可用性全链路容灾体系落地操作手册
分布式
Ronin3056 天前
信道管理模块和异步线程模块
开发语言·c++·rabbitmq·异步线程·信道管理
Asher05096 天前
Hadoop核心技术与实战指南
大数据·hadoop·分布式