
3.topic
topic交换器通过路由键,将自动匹配允许匹配的队列,相比fanout,更加灵活,不过对架构要求更高。如下图所示


高级特性:
为了确保消息可靠性,有两种处理方式.
1.rabbitmq事务
事务主要是对信道进行设置,示例代码如下

第三种:使用延迟插件
集群
先来谈谈rabbitmq的集群是如何运行的
当你开启来两个rabbitmq(节点)服务,并将其组成为一个集群。每个节点并不会将所有的队列进行拷贝,元数据依旧保存在单个节点当中,其他节点则是通过指针。
举个例子:节点a和节点b组成了一个集群,节点a保存着一堆元数据 c 和 元数据d的指针,用来指向节点b,节点b保存一堆元数据d 和 元数据 c的指针,用来指向节点a。
这样做有两个原因
1 存储空间 :如果一个节点存储了1gb的数据,再添加节点,只会带来一摸一样的1gb的数据,非常浪费磁盘空间
2 性能:对于持久化消息来说,每一条消息都会触发磁盘io,每次新增节点,网路和磁盘负载都会增加,相对于单机来说,性能不但不会提升,反而可能下降。
但是由于交换器只是一张查询表,并非实际的路由器,因此将交换器在整个集群进行复制也不会损耗太多的性能,所以交换器在每个节点都会保存一份,以便于查询。