1.vhost(虚拟主机)
虚拟主机相当于一个隔离的空间,多个虚拟主机可以对不同的用户,不同的作用分割开来
2.Producer(生产者)
生产者就是消息的生产者
3.Consumer(消费者)
消费者指的是消费消息
4.Queue(队列)
队列为存储消息的容器,用于消息存储的缓冲
- 设置为持久化的队列,queue中的消息会在server本地硬盘存储一份,防止系统crash,数据丢失
- 设置为临时队列,queue中的数据在系统重启之后就会消失
- 设置为自动删除的队列,当不存在用户连接到server,队列中的数据会被自动删除
5.channel (通道)
几乎所有的操作都在channel中进行,channel是进行消息读写的通道。客户端可建立多个channel,每个channel代表一个会话任务
6.Massage (消息)
由producer生产出来,每个消息都有一个路由键(routing key)的属性。就是一个简单的字符串
7.Broker (队列服务器)
消息队列服务器实体
8.Connection (连接)
应用程序与broker的网络连接
9.Binding (绑定)
一个绑定就是基于路由键将交换机和队列连接起来的路由规则,所以交换机不过就是一个由绑定构成的路由表。Exchange和Queue的绑定可以是多对多的关系.
举例:一个具有路由键“key1”的消息要发送到两个队列,queueA和queueB。要做到这点就要建立两个绑定,每个绑定连接一个交换机和一个队列。两者都是由路由键“key1”触发,这种情况,交换机会复制一份消息并把它们分别发送到两个队列中。
10.Exchange (交换机)
Exchange类似于数据通信网络中的交换机,提供消息路由策略。Rabbitmq中,Producer不是通过信道(channel)直接将消息发送给queue,而是先发给Exchange。一个Exchange可以和多个queue进行绑定,Producer在传递消息的时候,会传递一个Routing_KEY,Exchange会根据这个ROUTING_KEY按照特定的路由算法,将消息路由给指定的queue。和Queue一样,Exchange也可以设置为持久化,临时或者自动化
Exchange有4种类型:direct(默认),fanout,topic和headers,不同类型的Exchange转发消息的策略有所区别:
- Direct
直接交换器,工作方式类似于单播,Exchage会将消息发送完全匹配的ROUTING_KEY的Queue - fanout
广播式交换器,不管消息的ROUTING_KEY设置为 什么,Exchange都会将消息转发给所有绑定的Queue - topic
主题交换器,工作方式类似于组播,Exchange会将消息转发给ROUTING_KEY匹配模式相同的所有队列,比如,ROUTING_KEY为user.stock的Message会转发给绑定匹配模式为 .stock.user.stock, * . 和#.user.stock#的队列 (*表示匹配一个任意的词组,#表示匹配0个或多个词组) - headers
首部交换机是忽略routing_key的一种路由方式。路由器和交换机路由的规则是通过Headers信息来交换的,这个有点像HTTP的Headers。将一个交换机声明成首部交换机,绑定一个队列的时候,定义一个Hash的数据结构,消息发送的时候,会携带一组hash数据结构的信息,当Hash的内容匹配上的时候,消息就会被写入队列。