一:消息生产者(producer)
1.消息的组成
- body(消息体)
- label(标签)
- routerKey(路由键)
- queue:queue1
2.消费者连接服务器(connection)
- 而一个连接中有很多信道 很像SqlSession.openSession创建一次会话
二 什么是虚拟主机
1.一台rabbitmq可以有多个虚拟主机 比如192.168.121.122:5692服务器
如何解释虚拟主机呢? 我们大概的引入数据库的概念 列如我一个数据库的服务器 是不是可以有多个数据组成?每个数据库相对独立,这和虚拟主机的概念差不多
三 虚拟主机中有什么
1.exchange(也称为交换机)
1.交换机有4种绑定规则:
fanout:只要这个交换机绑定的所有的消息队列都会收到同一份消息
direct:这是一种点对点的消息传递 会有一个交换机和消息队列路由键 如果生产者的带来的路由键匹配交换机和消息队列路由键 则会发送消息到那个消息队列
一个消费者发送了一条消息 他的路由键是:order 到达交换机 交换机和消息队列中间也有一个路由键的绑定(bindKey) 如果也是order 则这一条消息就会发送到这个消息队列中
topic:这是一种模糊匹配的消息传递
举个例子
一个交换机和两个队列binding 路由键分别为:com.#,*.order.* 这个时候一个消息生产者携带com.order.create
这条消息会发送到连个消息队列
*:单个单词匹配 以.号分割 在上面那个示例中cn.com.order.create 则不会到达*.order.*绑定的消息队列
#:全部单词匹配 以.号分割 com.不管后面是什么 都会匹配消息队列
headers:根据携带的头部信息来进行匹配
2.binding(绑定)
1.就是交换机与消息队列进行绑定
3.queue(消息队列)
四 消费者消费消息
1.列如我们有连个系统一个是order系统 sms系统
2.这两个系统分别监听消息队列 当监听到自己绑定的队列中有消息会做相应的处理