RabbitMQ(一)简介

RabbitMQ(一)简介,第1张

RabbitMQ(一)简介

一、消息中间件

消息(Message):是指在应用间传递的数据。可以是字符串、JSON、对象等。

消息队列中间件(Message Queue MiddleWare,简称MQ):是指利用高效可靠的消息传递机制与平台无关的数据交流,并基于数据通信进行分布式系统集成。

消息队列中间件,也可以称为消息队列或消息中间件。一般有两种传递模式:

点对点(P2P)和发布/订阅(Pub/Sub)

点对点:

基于队列的,消息生产者发送消息到队列,消息消费者从队列中消费消息,队列的存在使得消息的异步传输成为可能,

发布/订阅:

定义了如何向一个内容节点发布和订阅消息,这个内容节点称为主题(topic),主题可以认为是消息传递的中介,消息发布者将消息发布到某个主题,而消息订阅者则从主题中订阅消息。主题使得消息的订阅者和消息的发布者互相保持独立,不需要进行任何接触即可进行消息的传递,发布/订阅模式在消息的一对多广播时采用。

二、消息中间件的作用

解耦:消息中间件在处理过程中间插入了一个隐含的、基于数据的接口层,两边的处理过程都要实现这一接口,这允许你独立的修改或扩展两边的处理过程,只要确保他们遵守同样的接口约束即可。

冗余(存储):有时数据处理的过程会失败,消息中间件可以把数据持久化直到它们被完全处理,可以规避数据丢失的风险。

扩展性:因为解耦了应用的处理过程,所以提高消息的入队和处理效率是很容易的,只要另外增加处理过程即可,不需要改变代码,也不需要调节参数。

削峰:在访问量剧增的情况下,使用消息中间件能够使关键组件支撑突发访问压力,不会因为突发的超负荷请求而完全崩溃。

可恢复性:当系统的一部分组件失效时不会影响到整个系统,消息中间件降低了系统间的耦合度,所以即使一个处理消息的进程挂掉,加入消息中间件的消息仍然可以在系统恢复后进行处理。

顺序保证:大部分的消息中间件支持一定程度上的顺序性。

缓冲:消息中间件通过一个缓冲层来帮助任务最高效率的执行,写入中间件的处理会尽可能快速。该缓冲层有助于控制和优化数据流经过系统的速度。

异步通信:允许应用把一些消息放入消息中间件中,但并不立即处理他,在之后需要的时候再慢慢处理。

三、RabbitMQ起源

RabbitMQ是采用Erlang语言实现AMQP(Advanced Message Queuing Protocol,高级消息队列协议)的消息中间件,它最初起源于金融系统,用于在分布式系统中存储转发消息。

AMQP:应用层协议的一个开放标准,以解决众多消息中间件的需求和拓扑结构问题,它为面向消息的中间件设计,基于此协议的客户端与消息中间件可传递消息,并不受产品、开发语言等条件的限制。

RabbitMQ特点:

可靠性:RabbitMQ使用一些机制来保证可靠性,如持久化、传输确认及发布确认等。

灵活的路由:消息进入队列之前,通过交换器来路由消息。

扩展性:多个RabbitMQ接点可以组成一个集群,可以根据业务的实际情况来动态的扩展集群中的节点。

高可用性:队列可以在集群中的机器上设置镜像,使得在部分节点出现问题的情况下队列仍然可用。

多种协议:除了原生支持AMQP协议,还支持STOMP、MQTT等多种消息中间件协议。

多语言客户端:几乎支持所有常用语言,比如:Java、Python、Ruby、PHP、C#、Javascript等。

管理界面:提供了一个易用的用户界面,使得用户可以监控和管理消息、集群中的节点等。

插件机制:提供了许多插件,以实现从多方面进行扩展,当然也可以编写自己的插件。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5688016.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存