
RabbitMQ快速理解
什么是 MQ
- 消息队列中间件
- 实现接收和发送的异步解耦
真正的目的是为了通信(为什么)——>分布式系统 模块通信 使用HTTP 难实现
模块 A 可以调用 B,B 也可以主动调用 A
送数据的叫生产者;接收数据的叫消费者
定义生产者和消费者之间实现消息通讯,无视底层通讯协议
有 Broker 的 MQ
Broker 相当于中转服务器
重 Topic
代表是(kafka、JMS(ActiveMQ))
1、Broker 定义了三个队列,key1,key2,key3
2、生产者把数据发送相应key1和data
3、Broker 推送data(也可能带上key)
应用场景:暴力的数据流(性能最优)
kafaka是最好的选择
轻 Topic
代表是 RabbitMQ
key和queue 的解耦 轻量级 灵活应用
生产者 只关心发送key
消费者 只关心queue
AMQP 中有四种 exchange
- key = value
- queue全部来一份
- key 可以用“宽字符”模糊匹配 queue
- 无视 key,通过查看消息的头部元数据来决定发给那个 queue
应用场景:企业总线(灵活性)选择RabbitMQ
无 Broker
代表 是ZeroMQ
解决通信问题
既是生产者又是消费者
做的事情就是封装出一套类似于 Socket 的 API 可以完成发送数据,读取数据
应用场景:实现不同机器的 TCP、UDP 通讯 需要强大的、灵活、野蛮的通讯能力
选择ZeroMQ
网友评论