RabbitMQ是目前非常热门的一款消息中间件,不管是互联网行业还是传统行业都在大量地使用。RabbitMQ凭借其高可靠、易扩展、高可用及丰富的功能特性受到越来越多企业的青睐。

1.消息中间件

消息(Message)是指在应用间传送的数据。

消息队列中间件(Message Queue Middleware,简称MQ)是指利用高效可靠的消息传递机制进行与平台无关的数据交流,并基于数据通信来进行分布式系统的集成。通过提供消息传递和消息排队模型,它可以在分布式环境下扩展进程间的通信。

消息队列中间件,也可称为消息队列或消息中间件,一般分为两种传递模式:点对点模式和发布/订阅模式。

点对点模式(P2P,Point-to-Point): 是基于队列的,消息生产者发送消息到队列,消息消费者从队列中接收消息,队列的存在使得消息的异步传输成为可能。

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

目前开源的消息中间件有很多,比较主流的有RabbitMQ、Kafka、ActiveMQ、RocketMQ等。面向消息的中间件提供了以松散耦合的灵活方式集成应用程序的一种机制。它们提供了基于存储和转发的应用程序之间的异步数据发送,即应用程序彼此不直接通信,而是与作为中介的消息中间件通信。

消息中间件适用于需要可靠的数据传送的分布式环境。发送者将消息发送给消息服务器,消息服务器将消息存放在若干队列中,在合适的时候再将消息转发给接收者。消息中间件能在不同平台之间通信,它常被用来屏蔽各种平台及协议之间的特性,实现应用程序之间的协同,其优点在于能够在客户和服务器之间提供同步和异步的连接,并且在任何时刻都可将消息进行传送或者存储转发,这也是比远程过程调用(RPC)更进步的原因。

2.消息中间件的作用

1.解耦

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

2.冗余(存储)

消息中间件可以把数据进行持久化直到它们已经被完全处理,通过这一方式规避了数据丢失风险。在把一个消息从消息中间件删除之前,需要你的处理系统明确地指出该消息已经被处理完成,从而确保你的数据被安全地保存直到你使用完毕。

3.扩展性

消息中间件解耦了应用的处理过程,提高消息入队和处理的效率很容易,只需要另加处理过程,不需要改代码,也不需要调参数。

4.削峰

使用消息中间件能够使关键组件支撑突发访问压力,不会因为突发的超负荷请求而完全崩溃。

5.可恢复性

当系统一部分组件失效时,不会影响到整个系统。

6.顺序保证

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

7.缓冲

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

8.异步通信

消息中间件提供了异步处理机制,允许应用把一些消息放入消息中间件中,但并不立即处理它,在之后需要的时候再慢慢处理。

3.RabbitMQ的特点

RabbitMQ是采用Erlang语言实现AMQP的消息中间件,最初起源于金融系统,用于在分布式系统中存储转发消息。

特点

1.可靠性

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

2.灵活的路由

在消息进入队列之前,通过交换器来路由消息,对于典型的路由功能,RabbitMQ已经提供了一些内置的交换器来实现。针对更复杂的路由功能,可以将多个交换器绑定在一起,也可以通过插件机制来实现自己的交换器。

3.扩展性

多个RabbitMQ节点可以组成一个集群,也可根据实际业务动态扩展集群中节点。

4.高可用性

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

5.多种协议

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

6.多语言客户端

几乎支持所有常用语言,如Java、Python、Ruby、PHP、C#、JavaScript等。

7.管理界面

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

8.插件机制

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

RabbitMQ简介相关推荐

  1. RabbitMQ 简介以及使用场景

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者:海向 cnblogs.com/haixiang/p/1019 ...

  2. RabbitMQ 简介

    为什么80%的码农都做不了架构师?>>>    RabbitMQ 简介 MQ 消息队列,上承生产者,下接消费者.从生产者侧获取消息,然后将消息转发给消费者. 由此可见,MQ必须具有两 ...

  3. RabbitMQ简介和六种工作模式详解

    一.RabbitMQ简介 是一个开源的消息代理和队列服务器,用来通过普通协议在完全不同的应用之间共享数据,RabbitMQ是使用Erlang(高并发语言)语言来编写的,并且RabbitMQ是基于AMQ ...

  4. rabbitmq多个消费者_为什么要选择RabbitMQ,RabbitMQ简介,各种MQ选型对比

    MQ 是什么?队列是什么,MQ 我们可以理解为消息队列,队列我们可以理解为管道.以管道的方式做消息传递. 场景: 1.其实我们在双11的时候,当我们凌晨大量的秒杀和抢购商品,然后去结算的时候,就会发现 ...

  5. 《RabbitMQ 实战指南》第一章 RabbitMQ 简介

    <RabbitMQ 实战指南>第一章 RabbitMQ 简介 文章目录 <RabbitMQ 实战指南>第一章 RabbitMQ 简介 一.什么是消息中间件 二.消息中间件的作用 ...

  6. RabbitMQ简介及其安装

    一.简介 RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件). RabbitMQ服务器是用Erlang语言编写的. 二.工作过程 发布者(Publisher ...

  7. RabbitMQ简介以及AMQP协议

    RabbitMQ能为你做些什么? 消息系统允许软件.应用相互连接和扩展.这些应用可以相互链接起来组成一个更大的应用,或者将用户设备和数据进行连接.消息系统通过将消息的发送和接收分离来实现应用程序的异步 ...

  8. rabbitmq简介及安装

    概述 RabbitMQ是对高级消息队列协议(Advanced Message Queueing Protocol, AMQP)的实现,RabbitMQ是消息传输的中间者,可以把它当做是一个消息代理,你 ...

  9. RabbitMQ简介以及应用

    一.简要介绍 开源AMQP实现,Erlang语言编写,支持多种客户端 分布式.高可用.持久化.可靠.安全 支持多种协议:AMQP.STOMP.MQTT.HTTP 适用于多系统之间的业务解耦的消息中间件 ...

  10. rabbitMq简介及docker安装

    一.JMS协议和AMQP协议 关于JMS和AMQP的区别:主要是AMQP是协议,JMS是API而RabbitMQ 基于AMQP协议,erlang语言开发,是部署最广泛的开源消息中间件,是最受欢迎的开源 ...

最新文章

  1. java --级联操作(查询/更新)
  2. 解决ERROR 2003 (HY000): Can't connect to MySQL server on
  3. android屏幕底部黑块,Android surfaceView 黑块问题
  4. 假设一个随机性和因果性的双重态
  5. python磁盘io_python监控磁盘io
  6. oracle 给表空间改名,Oracle重命名表空间和删除表空间
  7. 御用导航提示页面_UI网站导航设计知识与五个知识案例
  8. Arraylist 类
  9. pywin32+excel(一)——Python使用win32com/pywin32操作excel
  10. RetinaFace论文解读 --- RetinaFace: Single-stage Dense Face Localisation in the Wild
  11. C# 报错 provisional headers are shown learn more
  12. 泛泰A870 Recovery KitKat 合集
  13. 斐讯w2换表盘_斐讯W2智能手表初体验:路由不要钱!手表也白送!
  14. 阿里云国际香港服务器,入手到底行不行?
  15. 小程序超过部分隐藏,不起作用
  16. Xposed插件开发---记录文件操作
  17. BGP路由黑洞及IBGP全连接
  18. SQL*Loader总结sqlldr
  19. Win11怎么连接上校园网?
  20. 机器学习元老之间的关系图

热门文章

  1. Verilog步进电机角度控制器设计(四相八拍)+程序
  2. mysql流量控制_freeradius中rlm_sqlcounter模块对时间和流量限制的实验笔记
  3. CAD 开发 过滤器 , 选择集
  4. Android 10亮屏、熄屏和自动调光
  5. php生成艺术签名 上
  6. JavaWeb12_JQuery_广告的自动显示与隐藏
  7. word如何一键全选,word怎么全选所有内容(word文档的快捷键操作)
  8. QML——Theme主题的创建和使用
  9. cout/cerr/clog的区别
  10. Tensorflow2.0数据集下载