RabbitMQ-交换机类型

MQ, 异步, 解耦合

时效性不是特别高的功能, 可以用MQ完成, 不占用响应时间

基于AMQP协议

集群, 在集群的机器上做镜像, 高可用:部分节点出问题, 仍然可以保持运行

 

Tracing, 异常机制, 问题描述

 

安装:

 erlang  

 

 

 

 

rabbitmq-server start

rabbitmqctl stop

rabbitmq-plugins enable management

控制台插件, 安装后, 暂时无法登录, 添加用户, 设置权限

 

 

 management < policy maker , monitoring < administrator

 virtual host ≈ 文件夹

 

 

 

 exchange 和 queue 绑定

 

7Channel
信道,多路复用连接中的一条独立的双向数据流通道。信道是建立在真实的

TCP连接内地虚拟连接,AMQP 命令都是通过信道发出去的,不管是发布消息、

订阅队列还是接收消息,这些动作都是通过信道完成。因为对于操作系统来说建

立和销毁 TCP 都是非常昂贵的开销,所以引入了信道的概念,以复用一条 TCP

 

连接。 

 

 Exchange 类型 

Exchange分发消息时根据类型的不同分发策略有区别,目前共四种类型:directfanouttopicheaders headers 匹配 AMQP 消息的 header 而不是路由键,此外 headers 交换器和 direct 交换器完全一致,但性能差很多,目前几乎用不到了,所以直接看另外三种类型

 

1direct

 

消息中的路由键(routing key)如果和 Binding 中的 binding key 一致, 交换器就将消息发到对应的队列中。路由键与队列名完全匹配,如果一个队列绑定到交换机要求路由键为“dog”,则只转发 routing key 标记为“dog”的消息,不会转发“dog.puppy”,也不会转发“dog.guard”等等。它是完全匹配、单播的模式。

 

 

2fanout

每个发到 fanout 类型交换器的消息都会分到所有绑定的队列上去。fanout 交换器不处理路由键,只是简单的将队列绑定到交换器上,每个发送到交换器的消息都会被转发到与该交换器绑定的所有队列上。很像子网广播,每台子网内的主机都获得了一份复制的消息。fanout 类型转发消息是最快的。

 

3topic

 

topic 交换器通过模式匹配分配消息的路由键属性,将路由键和某个模式进行匹配,此时队列需要绑定到一个模式上。它将路由键和绑定键的字符串切分成单词,这些单词之间用点隔开。它同样也会识别两个通配符:符号“#”和符号“*”。#匹配0个或多个单词,“*”匹配不多不少一个单词。

 

 

 

 

 


基本特征使用环境与场景AMQP订阅,发布,事务标准网络环境,高可靠性要求场合MQTT订阅,发布,事务,小型传输低功耗网络环境,高可靠性要求场合XMPP客户端,服务端、网关标准网络环境,P2P流式数据传输,数据架空存储STOMP订阅,发布,自定义事件伴随WEBSOCKET使用,主要弥补HTTP协议无状态问题JMS高度抽象,平台无关通用化场景

 

 

 

 

Fanout: 

 

 

 

 

 

 topic:

 匹配式广播

# 0个, 1个, 多个单词

* 一个单词

 

下图消费者二, 接收不到消息, 因为*必代表一个单词

 

 

 

 

 

 

 

 

 

 

posted @ 2021-07-06 11:04  hippoppower  阅读(101)  评论(0)    收藏  举报