rabbitmq的概念及作用

基本概念

Broker

容器: 它提供一种传输服务,它的角色就是维护一条从生产者到消费者的路线,保证数据能按照指定的方式进行传输,

关系

“exchange”接收发布应用程序发送的消息,并根据一定的规则将这些消息路由到“消息队列”。
“message queue”存储消息,直到这些消息被消费者安全处理完为止。
“binding”定义了exchange和message queue之间的关联,提供路由规则。

Exchange 和 Routing_Key

交换器,根据类型自带规则,一般和Queue配合。

Exchange的类型表格:

类型 名称xxxxxxxxx 描述
Direct Exchange 直接匹配 通过Exchange名称+RountingKey来发送与接收消息.
Fanout Exchange 广播订阅 向所有的消费者发布消息,但是只有消费者将队列绑定到该路由器才能收到消息,忽略Routing Key.
Topic Exchange 主题订阅 根据Routing_Key的规则匹配消息,可以使用通配符:
* 匹配任意单词
# 匹配单个或多个单词
Headers Exchange 消息头订阅 用的不多,略

Queue

队列,也就是消息载体。

为什么要有Queue这个类

很多消息具有共性,例如我喜欢运动,sports是交换器,运动衣是一个队列:
new Queue(“clothes”); 这个队列实际内容可以是李宁,耐克,乔丹。但是都属于同一对垒。

Queue 和 AnonymousQueue 的区别

都是Queue的2种实现。
Queue默认值:

durable: true  # 会持久化
exclusive: false # 不排他
autoDelete: false # 不自动删除

AnonymousQueue默认值:

durable: false # 不持久化
exclusive: true # 排他
autoDelete: true # 会自动删除

Binding

绑定交换器和队列,中间是否用routing_key和交换器类型有关。
一个交换器可以对应多个队列,一个队列也可以对应多个交换器。

vhost

虚拟主机,一个broker里可以有多个vhost,用作不同用户的权限分离。

其他

rabbitmq如何让消费端只有消费权限

通常发送者和接受者使用相同rabbitmqConfig,但是这么一来,消费者端也有控制rabbitmq的权限了,如何让他只能消费,而没有其他权限??

rabbitmq官网文档地址:
https://www.rabbitmq.com/getstarted.html

你可能感兴趣的:(java)