Rabbitmq学习整理1

来源:互联网 发布:mysql cast 编辑:程序博客网 时间:2024/06/05 14:51

1、基本概念
Rabbitmq是AMQP协议的一种实现
核心概念
1). Broker:消息服务器实体
2). Visual Hosts(vhosts):一组users,exchanges,queues等AMQP entities的集合,每一个vhost都是一个功能完整,完全独立的消息处理器,一个Broker里可以有多个vhost,当client和server建立connection的时候,会确定该connection要操作的vhost
3). Exchange:交换器,把消息从producer发布至queue,通常一vhost里有一个Exchange
重要属性:
Name:名称
Durability:broker重启时将复活
Auto-delete:当没有queue连接的时候,将自动删除
Arguments:依赖于broker
4). Queues:存储消息并等待应用消费,一个vhost里可以有任意多个queue
重要属性:
Name:名称
Durable:broker重启时将复活
Exclusive:谁连接谁使用,当连接关闭时,自动删除
Auto-delete:当所有消费者取消订阅时将自动删除
Arguments:依赖于broker
5). Bindings:exchanges和queues之间的绑定关系,如果exchange和queue都是durable,则binding也是durable,如果exchange和queue一个durable,一个不是durable,则不能建立binding
6). Connection:连接基于TCP协议,通常是长连接,可使用TLS(SSL)进行安全传输
7). Channel:会话,在应用和broker建立起Connection后,每次发送消息都将建立一个channel:每次启动一个线程将建立一个新的channel,这些channel之间互相不可见,channel可以看作是共享同一个TCP Connection的多个轻量级connection
8). consumers:消息消费者
9). producers:消息提供者
10). Messages:被传递的内容,
Acknowledgements:consumer返回给broker,确认message已经接收到或处理完毕等,可以由参数设定返回时机
重要属性:
Content type
Content encoding
Routing key
Delivery mode(是否persistent,消息是否持久化本身取决于这个属性,而不是exchange和queue的持久性)
Message priority
Message publishing timestamp
Expiration period
Publisher application id

AMQP entities关系图:
AMQP entities关系图

2、权限控制
rabbitmq server初始化的时候,会创建一个“/”的vhost,和一个guest/guest的user,guest对“/”有所有权限
有以下三种权限:
configure:create,destroy,alter resources
write:inject messages into a resource
read:retrieve messages from a resource
两层权限控制:
1)user是否允许访问vhost
2)vhost中资源configure,write,read分别权限控制
注:默认情况下,guest用户只能本地连接,不能远程连接

3、四种Exchange type:
1)Direct exchange:根据message的routing key和binding的routing key是否相等,传递到相应的queue
2)Fanout exchange:广播消息到所有绑定的queue,忽略message和binding的routing key
3)Topic exchange:根据message的routing key和binding的routing key模式匹配,传递到相应的queue
4)Headers exchange:不使用routing key匹配,而是使用headers attribute

0 0
原创粉丝点击