RabbitMQ(基础概念, 简单使用)(中):https://developer.aliyun.com/article/1518407
Direct 交换机
Direct 模型下, 队列与交换机的绑定会指定一个 RoutingKey(路由key)
消息的发送方在向 Exchange 发送消息时吗也必须指定消息的 RoutingKey
Exchange 会将消息交给具有相同 RoutingKey 的队列
创建交换机
创建队列
将交换机和队列进行绑定 (填写 RoutingKey)
消息接收
此时会发现, 对于不同的消息发送, 会有不同的处理
当 RoutingKey 为 red 时, 两个消费者都会进行消息处理
当 RoutingKey 为 green / blue 时, 只有绑定对应的 RoutingKey 的消费者都会进行消息处理
Tocpic 交换机
和 Direct 交换机基本类似, 但是绑定的 RoutingKey 可以使用通配符
通配符规则:
- #:匹配一个或多个词
- *:匹配不多不少恰好1个词
创建 tocpic 交换机
创建队列
将 topic 交换机与 队列 进行路由绑定
消息发送
消息接收
消息处理
声明队列和交换机
使用 Spring AMQP 提供的 API 来声明队列和交换机, 而不是使用 RabbitMQ 控制台来操作
使用 ExchangeBuilder 来创建队列和交换机
绑定队列和交换机
Fanout 实例
写一个类声明交换机和队列
运行 publisher 后, 可以在控制台看到 队列, 交换机, 绑定 都已完成
Direct示例 (Topic 与其几乎完全相同)
写一个类声明交换机和队列
运行 publisher 后, 可以在控制台看到 队列, 交换机, 绑定 都已完成
基于注解声明
由于要绑定多个 key 的情况, 基于 @Bean 的方式声明队列和交换机会很麻烦, 因此 Spring AMQP 提供了注解的方式来声明 交换机和队列
Fanout 示例
在消费的同时声明 Fanout 交换机和队列
运行 publisher 后查看 RabbitMQ 控制台
Direct示例 (Topic 与其几乎完全相同)
在消费的同时声明 Fanout 交换机和队列
运行 publisher 后查看 RabbitMQ 控制台