RabbitMQ 使用指南( 二 )


5.1.2 消费者
Consumer: 消费者 ,就是接收消息的一方 。
消费者连接到 RabbitMQ 服务器,并订阅到队列上。当消费者消费一 条消息时 , 只是消费消息的消息体(payload ) 。在消息路由的过程中 ,消息的标签会丢弃 ,存入到队列中的消息只有消息体,消费者也只会消费到消息体 ,也就不知道消息的生产者是谁,当然消费者也不需要知道。
5.2 队列
Queue: 队列,是 RabbitMQ 的内部对象,用 于存储消息 。

RabbitMQ 使用指南

文章插图
 
5.3 交换器, 路由键, 绑定
5.3.1 交换器
Exchange: 交换器 。在上图中我们暂时可以理解成生产者将消息投递到队列中,实际上 这个在 RabbitMQ 中不会发生 。真实情况是,生产者将消息发送到 Exchange (交换器),由交换器将消息路由到一个或者多个队列中 。如果路由不到,或 许会返回给生产者, 或许直接丢弃 。这里可以将RabbitMQ 中的交换器看作一个简单的实体 。
RabbitMQ 使用指南

文章插图
 
RabbitMQ 中的 交换器有四种类型, 四种类型分别是 fanout、direct、topic 、headers,不同的类型有着不 同的路由策略 。
5.3.2 路由键
RoutingKey : 路由键。
生产者将消息发给交换器 的时候, 一般会指定 一个 RoutingKey ,用 来指定这个消息的路由规则,而这个 RoutingKey 需要与交换器类型和绑定键 (BindingKey) 联合使用才能最终生效 。
在交换器类型和绑定键 (BindingKey) 固定的情况下,生产者可以在发送消息给交换器时, 通过指定 RoutingKey 来决定消息流向哪里 。
5.3.3 绑定
Binding: 绑定 。RabbitMQ 中通过绑定将交换器与队列关联起来,在绑定的时候一般会指定一个绑定键(BindingKey) ,这样 RabbitMQ 就知道如何正确地将消息路由到队列了 。
5.4 交换器类型
1).fanout : 它会把所有发送到该交换器的消息路由到所有与该交换器绑定的队列中 。
2).direct: 该类型的交换器路由规则也很简单, 它会把消息路由到那些
BindingKey 和 RoutingKey 完全匹配的队列中 。
3).topic : 前面讲到 direct 类型的交换器路由规则是完全匹配 BindingKey和 RoutingKey ,但是这种严格的匹配方式在很多情况下不能满足实际业务的需求 。topic 类型的交换器在匹配规则上进行了扩展,它与 direct 类型的交换器相似,也是将消息路由到 BindingKey 和 RoutingKey 相匹配的队 列中,但这里的匹配规则有些不同,它约定:
RoutingKey 为一个点号"." 分割的字符串 , 如 : com.itcast.client , com.itheima.exam 。
BindingKey 与 RoutingKey 一样也是点号"." 分割的字符串 。
BindingKey 中可以存在两种特殊的字符串 "*" 和 "#" , 用于模糊匹配,其中
"#"用于匹配一个单词, "*"用于匹配多个单个(可以是零个) 。
4). headers : 该类型的交换器不依赖于路由键的匹配规则来路由消息,而是根据发送的消息内容中 的 headers 属性进行匹配 。
6 生产者发送消息6.1 队列绑定
6.1.1 创建队列
在 RabbitMQ 的后台管理界面中创建一个队列 , 指定队列名称 。
RabbitMQ 使用指南

文章插图
 
6.1.2 创建交换器 Exchange
在 RabbitMQ 的后台管理界面中创建一个交换器,指定交换器的名称, 并且指定交换器类型 。
RabbitMQ 使用指南

文章插图
 
6.1.3 绑定队列与交换器
在交换器列表点击对应的交换器 , 进入到绑定界面 , 指定队列名称 queue , 指定 RoutingKey , 通过该 RoutingKey 来绑定该队列与交换器 Exchange。
RabbitMQ 使用指南

文章插图
 
之后,在发送消息时, 指定了 Exchange ,及 RoutingKey, 就可以将该消息路由到该队列 queue 中 。
RabbitMQ 使用指南

文章插图
 
6.2 发送消息逻辑代码
6.2.1 引入依赖
RabbitMQ 使用指南

文章插图
 
6.2.2 发送消息
RabbitMQ 使用指南

文章插图
 

RabbitMQ 使用指南

文章插图
 
6.3 发送消息平台监测
RabbitMQ 使用指南


推荐阅读