RabbitMQ的核心组成部分
交换机(Exchange)一定是要有的,如果没写的话,则是会使用默认的交换机
核心概念
Server: 又被称为Broker,接受客户端的连接,实现AMQP服务。就是我们自己安装的rabbitmq-server
Connection: 连接,应用程序与Broker的网络连接(使用的是TCP/IP连接)
**Channel:**网络信道,几乎所有的操作都在Channel中进行,Channel是进行消息读写的通道,每个通道Channel代表一个会话任务。
Message:消息,服务于应用程序之间传递的数据,由Properties和body组成,Properties可以对消息进行修饰,比如消息的优先级,延迟等高级特征,Body则是消息体的内容。
Virtual Host 虚拟地址,用于逻辑层隔离,最上层的消息路由,一个虚拟机理由可以有若干的Exchange和Queueu,同一个虚拟机里面不能有相同名字的Exchange。
Exchange: 交换机,接收消息,根据路由键发送消息到绑定的队列(不具备储存消息的能力)
Bindings: Exchange和Queue之间的虚拟连接,Binding中可以保护多个routing key.
Routing key: 是一个路由规则,虚拟机可以用它来确定如何路由一个特定消息。
Queue:队列,也是MessageQueue队列,保存消息转发给消费者
RabbitMQ的整体架构
RabbitMQ的操作流程
第一:获取Conection
第二:获取Channel
第三:定义Exchange,Queue
第四:使用一个RoutingKey将Queue Binding到一个Exchange上
第五:通过指定一个Exchange和一个RoutingKey来将消息发送到对应的Queue上,
第六:Consumer在接收时也是获取connection,接着获取channel,然后指定一个Queue,到Queue上取消息,它对Exchange,RoutingKey及如何Binding都不关心,到对应的Queue上去取消息就行了。
注意:一个PublisherClient发送消息,哪些ConsumerClient可以收到消息,在于Exchange,RoutingKey,Queue的关系上