MQ相关概念
什么是MQ
MQ (message queue)
FIFO先进先出
用于上下游传输数据
MQ作用
- 流量削峰
- 应用解耦
- 异步处理
RabbitMQ
AMQP协议
Broker:接收和分发消息的应用,RabbitMQ就是Broker
Virtual Host:虚拟broker,将多个单元隔开
Connection:publisher / consumer和broker之间的TCP连接
Channel:connection内部建立的逻辑连接,通常每个线程创建单独的channel
Routing Key:路由键,用来指示消息的路由转发
Exchange:交换机
Queue:消息队列,消息最终被送到这里等待
Binding:exchange和queue之间的虚拟连接,用于message的分发依据
Exchange相关知识
可以在这个网站看具体的交换机如何分发,http://tryrabbitmq.com/
Diect Exchange
Message中的Routing Key如果和Binding Key一致,Direct Exchange则将message发送到对应的queue中
Fanout Exchange
每个发送到Fanout Exchange的message都会分发到所有绑定的queue上去
Topic Exchange
根据Routing Key以及通配规则,Topic Exchange将消息分发到目标Queue中
Binding Key中的 # :匹配任意个数的word
Binding Key中的 * :匹配任意1个word
例子
咖啡、奶茶、果汁三种饮料
咖啡含有咖啡因、冷热均可、苦甜均可,Binding Key 为:caffeine.#
奶茶不含有咖啡因、热饮、甜味,Binding Key为:nocaffeine.hot.sweet
果汁不含有咖啡因、冷热均可、甜味,Binding Key为:nocaffeine.*.sweet
安装
https://rabbitmq.com/download.html