介绍
RabbitMQ,2007年发布,是一个AMQP(高级消息队列协议)基础上完成的,可复用的企业消息系统,是当前最主流的消息中间件之一
RabbitMQ功能比较完备、健壮、稳定、易用、并且跨平台,支持语言如python、ruby、.net、java、jms、c、php、ajax,并且文档齐全,提供了开源的管理界面,很高的社区活跃度,更新频率相当高
四大核心概念
- 生产者:发送消息到的RabbitMQ客户端为生产者
- 交换机(与队列一对多):是RabbitMQ非常重要的一个部件,用于接收来自生产者的消息,并且也需要将消息推送到队列中,交换机必须确切的知道如何处理接收到的消息,是将这些消息推送到指定队列还是多个队列,或是将消息丢弃都由交换机类型觉得
- 队列(与消费者一对一):是RabbitMQ中存储消息数据结构,生产者生产的消息最终会存放在队列中,消费者消费消息需要从队列中获取
- 消费者:并且并且消费队列中的消息为消费者
名词解释
一张图
- Broker:接受和分发消息的应用(MQ服务器、消息实体)
- Exchange:交换机
- Queue:队列
- Producer:生产者
- Consumer:消费者
- Channel:信道,发消息的通道,是每一个连接里内部建立的多个逻辑连接,每次发消息只占用一个信道,多路复用
- Connection:publisher/consumer和broker之间的TCP连接,因为建立Connection开销大,所以只建立一个
- Binding:Exchange和Queue之间的连线
- Virtual host:(在broker里可以有多个vhost)MQ的一个库,出于多租户和安全因素设计的,将AMQP的基本组件划分到一个虚拟的分组中,类似网络中的namespace概念;当不同用户使用同一个RabbitMQ server 提供的服务时,可以划分出多个vhost,每个用户在自己的vhost创建exchange/queue等