基础知识
- 虚拟主机 (Virtual Host): 每个 virtual host 拥有自己的 exchanges, queues 等 (类似 MySQL 中的库)
- 交换器 (Exchange): 生产者产生的消息并不是直接发送给 queue 的,而是要经过 exchange 路由, exchange 类型如下:
- fanout: 把所有发送到该 exchange 的消息路由到所有与它绑定的 queue 中
- direct: 把消息路由到 binding key 与routing key 完全匹配的 queue 中
- topic: 模糊匹配 (单词间使用”.”分割,”*” 匹配一个单词,”#” 匹配零个或多个单词)
- headers: 根据发送的消息内容中的 headers 属性进行匹配
- 信道 (Channel): 建立在真实的 TCP 连接之上的虚拟连接, RabbitMQ 处理的每条 AMQP 指令都是通过 channel 完成的
使用示例
RabbitMQ 安装参考: docker 安装rabbitMQ
新建 Spring Boot 项目,添加配置:
1 | spring: |
1. 基本使用
Queue
1 | @Configuration |
Producer
1 | @Component |
Consumer
1 | @Component |
2. fanout
Exchange, Queue, Binding
1 | @Configuration |
Producer
1 | @Component |
Consumer
1 | @Component |
3. direct
Exchange, Queue, Binding
1 | @Configuration |
Producer
1 | @Component |
Consumer
1 | @Component |
4. topic
Exchange, Queue, Binding
1 | @Configuration |
Producer
1 | @Component |
Consumer
1 | @Component |
完整代码:GitHub