RabbitMQ架构

虚拟主机(vhost):一个"用户"只能操作属于自己的虚拟主机里的交换机和队列,起到了数据隔离的作用。
MQ(消息队列)技术对比

交换机
绝大多数情况下,消息传递过程是:生产者->交换机->队列->消费者
Fanout交换机

消费者(指定交换机 )->Fanout交换机->广播到所有(与Fanout绑定的)队列
Direct交换机和Topic交换机

消费者(指定交换机+bindingkey )->Direct交换机->定向到所有(与Direct交换机绑定+bindingkey匹配的)队列

消费者(指定交换机+bindingkey )->Topic交换机->定向到所有(与Topic交换机绑定+bindingkey匹配的)队列
对比一下Direct交换机和Topic交换机
消费者(指定交换机+bindingkey)->Direct交换机->定向到所有(与Direct交换机绑定+bindingkey匹配的)队列
消费者(指定交换机+bindingkey)->Topic交换机->定向到所有(与Topic交换机绑定+bindingkey匹配的)队列
是不是一摸一样?是的,那总该得有区别吧?区别在于:
Direct 交换机bindingkey完全精确匹配,无通配符支持
Topic 交换机bindingkey模糊匹配 ,支持两种通配符:1. *:匹配一个 用 . 分隔的单词
#:匹配零个或多个 用.分隔的单词
声明交换机和队列
在控制台手动声明
RabbitMQ 的控制台官方名称是 RabbitMQ Management UI(也常简称为「RabbitMQ 管理控制台」「RabbitMQ 管理界面」),是 RabbitMQ 官方提供的可视化管理工具。
访问方式 :启动RabbitMQ服务后,默认通过浏览器访问 http://[RabbitMQ服务器IP]:15672(默认端口 15672),需输入 RabbitMQ 的用户名 / 密码(默认管理员账号:guest/guest,仅本地访问有效)。

在代码中自动化声明(以Java为例)
配置类中声明交换机、队列、绑定(Fanout无此):


注释声明:
在消费者方法上加上注释

消息转换器
生产者与消费者之间的交换机、队列里面装的消息是序列化后的信息,生产者要通过消息转换器把原始数据转换成交换机、队列之间的消息,消费者要通过消息转换器将接收到的消息转换成原始数据。
JDK序列化

JSON序列化

RabbitMQ进阶 学习笔记2:RabbitMQ 进阶 学习笔记2-CSDN博客