标签:简介 很多 保存 情况下 客户 子网 针对 direct 问题
前言
RabbitMQ 是使用Erlang语言开发的基于AMQP标准的开源实现,用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不错
RabbitMQ的特点
1、保证可靠性(Reliability):使用持久化、传输确认、发布确认等机制
2、灵活的路由功能(Flexible Routing):在消息进入队列之前,通过Exchange(交换器)来路由消息,对应典型的路由功能,RabbitMQ提供了内置的一些Exchange来实现、针对复杂的路由功能,可以将多个Exchange绑定在一起,也可以通过插件来实现自己的Exchange
3、支持消息集群(Clustering):多台RabbitMQ服务器可以组成一个集群,形成一个逻辑Broker
4、具有高可用性(Highly Available):队列可以在集群中的机器进行镜像,在部分节点出现问题的情况下队列仍然可用
5、支持多种协议(Multi-protocol):RabbitMQ除了支持AMQP协议之外,还通过插件方式支持其它消息队列协议,比如STOMP、MQTT等
6、支持多语言客户端(Many Client):几乎支持所有常用的语言
7、提供管理界面(Management UI):RabbitMQ提供了一个简单的用户页面,用户可以监控和管理消息
8、提供跟踪机制(Tracing):RabbitMQ提供了消息跟踪机制,如果消息异常,使用者可以查出发生了什么情况
9、提供插件机制(Plugin System):RabbitMQ提供了许多插件,从多方面进行扩展,也可以自己编写自己的插件
整体架构图
架构介绍
1、Message(消息):由消息头和消息体组成、消息体是不透明的、消息头由一系列可选属性组成:例如routing-key路由键、priority消息优先级、delivery-mode是否持久化存储等
2、Publisher(消息生产者):向交换机发布消息的客户端应用程序
3、Exchange(交换器):用来接收消息生产者发布的消息,并将这些消息路由给服务器中的队列
4、Binding(绑定):用于消息队列和交换机之间的关联
5、Queue(消息队列):用来保存消息直到发送给消费者,是消息的容器,一条消息可以被投入到多个队列中
6、Connection(网络连接):例如一个TCP连接
7、Channel(信道):多路复用连接中的一条独立的双向数据流通道
8、Consumer(消息消费者):从消息队列中取得消息的客户端应用程序
9、Virtual Host(虚拟主机):每个vhost都是一台缩小版的RabbitMQ、它拥有自己的队列、交换器、绑定和权限机制,默认的vhost是"/"
10、Broker(消息队列服务器实体)
交换器类型
目前交换器有4种类型:Direct、Fanout、Topic、Headers
Direct:
Direct交换器是完全匹配、单播模式,也被称为直连型模式,如果消息中的路由键和Binding中绑定键一致,交换机将消息发送到对应的队列中
Fanout:
Fanout交换器是扇形模式,不处理路由键,只是简单将队列绑定到交换器,发送到交换器的每条消息都回被转发到该交换器绑定的所有队列中,类型子网传播,通过Fanout交换器转发消息是最快的
Topic:
Topic交换器是主题模式,通过模式匹配分发消息的路由键属性,将路由键和某种模式进行匹配,此时队列需要绑定一种模式,Topic交换器将路由键和绑定的字符串切分成单词,这些单词直接用点“.”隔开。该交换器会识别两个通配符:“#”和“*”,其中“#”匹配0个或多个单词,“*”匹配不多不少一个单词
Headers:
匹配AMQP消息的是Header而不是路由键,功能和Direct完全一致,但性能相差很多,目前几乎不用了
标签:简介 很多 保存 情况下 客户 子网 针对 direct 问题
原文地址:https://www.cnblogs.com/liweixml/p/14646242.html