ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

RabbitMQ简介

2021-12-31 17:33:21  阅读:163  来源: 互联网

标签:订阅 处理过程 队列 简介 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等。

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

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

四、RabbitMQ的安装及用户创建

标签:订阅,处理过程,队列,简介,RabbitMQ,消息,消息中间件
来源: https://blog.csdn.net/java_faep/article/details/122260204

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有