消息中间件(常用消息中间件)

 2023-09-19  阅读 14  评论 0

摘要:本篇文章给大家谈谈消息中间件,以及常用消息中间件对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。厉害!一文了解消息中间件-RabbitMQ RabbitMQ是2007年发布,是一个在AMQP(高级消息队列协议)基础上完成的,简称MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法,由Erlang(专门针对于大数据高并发的语言)语言开发,可复用的企业消息

本篇文章给大家谈谈消息中间件,以及常用消息中间件对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

厉害!一文了解消息中间件-RabbitMQ

RabbitMQ是2007年发布,是一个在AMQP(高级消息队列协议)基础上完成的,简称MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法,由Erlang(专门针对于大数据高并发的语言)语言开发,可复用的企业消息系统,是当前最主流的消息中间件之一,具有可靠性、灵活的路由、消息集群简单、队列高可用、多种协议的支持、管理界面、跟踪机制以及插件机制。

1.消息 就是数据,增删改查的数据。例如在员工管理系统中增删改查的数据

2.队列 指的是一端进数据一端出数据,例如C#中(Queue数据结构)

1.消息队列指:一端进消息,一端出消息

2.RabbitMQ就是实现了消息队列概念的一个组件,以面向对象的思想去理解,消息队列就是类,而RabbitMQ就是实例,当然不仅仅只有RabbitMQ,例如ActiveMQ,RocketMQ,Kafka,包括Redis也可以实现消息队列。

1.在常见的单体架构中,主要流程是用户UI操作发起Http请求服务器处理然后由服务器直接和数据库交互,最后同步反馈用户结果

2.在微服务架构中,UI与微服务通信,主要是通过Http或者gRPC同步通信

问题分析

在上述2种情况下,我们发现在UI请求时都是同步操作 ,第2种架构虽然将整体服务按业务拆分成不同的微服务并且对应各自的数据库,但是在用户与微服务通信时,存在的问题依然没有解决,例如数据库的承载能力只能处理10w个请求,如果遇到高并 *** 况下,UI发起50w请求,那数据库是远远承载不了的,从而导致如下问题。

1.高并发请求导致系统性能下降响应慢,同时数据库承载风险加大

2.扩展性不强UI操作的交互对业务的依赖较大,导致用户体验下降

3.瞬时流量涌入巨大的话,服务器可能直接挂了

解决方案

RabbitMQ的优势

RabbitMQ的不足

1.ConnectionFactory 为Connection的制造工厂。

2.Connection是RabbitMQ的socket链接,它封装了socket协议相关部分逻辑。

3.Channel是我们与RabbitMQ打交道的最重要的一个接口,我们大部分的业务操作是在Channel这个接口中完成的,包括定义Queue、定义Exchange、绑定Queue与Exchange、发布消息等。

4.Exchange(交换机) 我们通常认为生产者将消息投递到Queue中,实际上实际的情况是,生产者将消息发送到Exchange,由Exchange将消息路由到一个或多个Queue中(或者丢弃),而在RabbitMQ中的Exchange一共有4种策略,分别为:fanout(扇形)、direct(直连)、topic(主题)、headers(头部)

1.下载RabbitMQ

2.运行环境erlang

3.安装完成之后,加载RabbitMQ管理插件

4.安装成功访问RabbitMQ管理后台

1.分别创建考勤服务,请假服务,计算薪酬服务,邮件服务, *** 服务消费者角色

2.创建员工管理网站用于模拟前端调用,主要充当生产者角色

3.在员工管理网站和每一个模拟微服务中通过nuget引入RabbitMQ.Client

4.在员工管理网站中创建模拟添加考勤的控制器并加入生产者代码

5.在考勤微服务中创建接口,并在接口中加入消费者代码

fanout类型的Exchange路由规则非常简单,工作方式类似于多播一对多,它会把所有发送到该Exchange的消息路由到所有与它绑定的Queue中。

业务实例

当我们有员工需要请假,在员工管理系统提交请假,但是由于公司规定普通员工请假,需要发送 *** 到他的主管领导,针对此业务场景我们需要调用请假服务的同时去发送 *** ,这时需要两个消费者(请假服务, *** 服务)来消费同一条消息,其实本质就是往RabbitMQ写入一个能被多个消费者接收的消息,所以可以使用 扇形交换机,一个生产者,多个消费者.

生产者模拟使用调用控制器来实现

消费者实现IHostedService 接口创建一个 *** 主机

直接交换器,工作方式类似于单播一对一,Exchange会将消息发送完全匹配ROUTING_KEY的Queue,缺陷是无法实现多生产者对一个消费者

当我们员工管理系统需要计算薪资并将结果以发送 *** 的方式告诉员工,这个时候我们就不太适合用“扇形交换机”了,因为换做是你,你也不想你的工资全公司都知道吧?这个时候就需要定制了一对一的场景了,那就在生产消息时使用直连交换机根据routingKey发送指定的消费者.

生产者模拟使用调用控制器来实现

消费者实现IHostedService 接口创建一个 *** 主机

Exchange绑定队列需要制定Key; Key 可以有自己的规则;Key可以有占位符; 或者# , 匹配一个单词、#匹配多个单词,在Direct基础上加上模糊匹配;多生产者一个消费者,可以多对对,也可以多对1, 真实项目当中,使用主题交换机。可以满足所有场景

1.生产者定义Exchange,然后不同的routingKey绑定

3.消费者routingKey的模糊匹配,生产者发送消息时routingKey定义以 *** s.开头, * 号只能匹配的routingKey为一级,例如( *** s.A)或( *** s.B)的发送的消息,# 能够匹配的routingKey为一级及多级以上 ,例如 ( *** s.A)或者( *** s.A.QWE.IOP)

在月底的时候我们需要把员工存在异常考勤信息,薪资结算信息,请假信息分别以邮件的形式发送给我们的员工查阅,我们知道这是一个典型的多个生产者,一个消费者场景,异常考勤信息,薪资结算信息,请假信息分别需要生产消息发送到RabbitMQ,然后供我们员工消费

分别模拟3个生产者:异常考勤信息,薪资结算信息,请假信息

headers类型的Exchange不依赖于routing key与binding key的匹配规则来路由消息,而是根据发送的消息内容中的headers属性进行匹配。

在绑定Queue与Exchange时指定一组键值对以及x-match参数,x-match参数是字符串类型,可以设置为any或者all。如果设置为any,意思就是只要匹配到了headers表中的任何一对键值即可,all则代表需要全部匹配。

1.不需要依赖Key

2.更多的时候,像这种Key Value 的键值,可能会存储在数据库中,那么我们就可以定义一个动态规则来拼装这个Key value ,从而达到消息灵活转发到不同的队列中去

我们根据上面的业务和代码简单实现了由生产者到消费者的一个业务流程,我们可以总结出知道,整个消息的收发过程包含有三个角色,生产者(员工管理网站)、RabbitMQ(Broker)、消费者(微服务),在理想状态下,按照这样实现,整个流程以及系统的稳定性,可能不会发生太大的问题,但是真正在实际应用中我们要去思考可能存在的问题,主要从三个大的方面去分析,然后发散。

1.生产端

2.存储端

3.消费端

我们在给RabbitMQ发送消息时,如何去保证消息一定到达呢,我们可以使用RabbitMQ提供了2种生产端的消息确认机制

我们生产端给RabbitMQ发送消息成功后,如果RabbitMQ宕机了,会导致RabbitMQ中消息丢失,如何解决消息丢失问题,针对RabbitMQ消息丢失,我们可以在生产者中使用

1.持久化消息

2.集群

当生产者写入消息到RabbitMQ后,消费服务接收消息期间,服务器宕机,导致消息丢失了,这个时候我们就应该使用RabbitMQ的消费端消息确认机制

1.自动确认

2.手动确认

消费者收到消息。消费者发送确认消息给rabbitmq期间。执行业务逻辑失败了,但是消息已经确认被消费了,我们应该在我们的消费者接收消息回调执行业务逻辑后面,执行使用手动确认消息机制,保证消息不被丢失

原文链接:

什么是消息中间件

问题一:消息中间件是什么? 目前对消息中间件(MOM)的定义还未形成统一的行业标准,我国也正加快对消息中间件技术的标准化研究工作。一般认为,消息中间件是一种由消息 *** 机制或消息队列模式组成的中间件技术,利用高效可靠的消息传递机制进行平台无关的数据交流,并基于数据通信来进行分布式系统的集成。与其它中间件技术不同(例如ORB 和RPC),一般来说,消息中间件并不要求系统具备一个可靠的底部传输层,而是通过以消息的形式收发应用程序数据来连接运行于不同系统上的应用程序。信息可以同步 *** ,也支持异步 *** 。在异步方式下,应用程序并不需要消息即时即刻 *** 到对方,只是由MOM 确保把信息以鼎息的方式 *** 到适当的目的地,并且只传一次。

消息中间件属于中间件的一种,拥有中间件的主要特点,但是自身的工作机制又具有特殊性,主要特点包括以下6 个方面:(1)异步 *** ;(2)防御通信;(3)并发执行;(4)日志通信;(5)多种通信方式;(6)应用程序与网络复杂性相隔离。

问题二:消息中间件用在什么地方? 10分 消息中间件为应用系统提供高效、灵活的消息同步和异步传输处理、存储转发、可靠传输。在大规模分布式环境下确保消息安全、可靠、高效送达。

特点:

1.分布式环境下,可靠、高效的消息传输

产品容错能力强,系统崩溃时不会导致消息丢失,确保关键业务数据的可靠传输;支持断点续传和消息流量控制,使消息引擎能够最大效率地利用网络传输能力。

2.多种集群方式,稳定高效

InforSuite MQ的若干节点可以组建为多种方式的群组,对外提供消息接收和处理功能。当单个节点无法满足大负载的消息处理要求,可以使用集群功能将负载分配到多个节点上,提高系统的处理能力和可扩展性。

3.全方位的安全机制保障

产品提供多层次的安全管理功能,包括连接建立时的网络认证,消息传输时的安全性保证,有效保证了连接的合法性和私有数据的保密性。

一般都是银行类大系统,军工或者研究所的大项目,存在很多数据传输的时候需要,可以 *** 国内的一些基础中间件公司,就那么几家,中创中间件、东方通中间件、金蝶等,可以多了解

问题三:j *** a 消息中间件 在什么情况下使用 消息中间件一般两个功能,解耦和异步处理,参考:blog.sina/s/blog_7085382f0102uy79

问题四:消息中间件有哪些 可与OA、ERP集成的免费消息中间件Active Messenger(简称AM)是一款非常实用的企业即时通讯软件。系统提供免费的消息中间件(以组件的方式提供),开放给第三方程序使用。

目前比较典型的消息中间件包括IBM WebSphere MQSeries、Tibco

TIB/Rendezvous和Microsoft M *** Q等。

问题五:j *** a消息中间件有哪些 ActiveMQ,是Apache出品,更流行的,能力强劲的开源消息总线。ActiveMQ 是一个完全支持JMS1.1和J2EE 1.4规范的 JMS Provider实现,尽管JMS规范出台已经是很久的事情了,但是JMS在当今的J2EE应用中间仍然扮演着特殊的地位。

MetaQ,是一款完全的队列模型消息中间件,服务器使用J *** a语言编写,可在多种软硬件平台上部署。客户端支持J *** a、C++编程语言。单台服务器可支持1万以上个消息队列,通过扩容服务器,队列数几乎可任意横向扩展。每个队列都是持久化、长度无限(取决于磁盘空间大小)、并且可从队列任意位置开始消费

问题六:消息中间件有哪些 可与OA、ERP集成的免费消息中间件Active Messenger(简称AM)是一款非常实用的企业即时通讯软件。系统提供免费的消息中间件(以组件的方式提供),开放给第三方程序使用。

目前比较典型的消息中间件包括IBM WebSphere MQSeries、Tibco

TIB/Rendezvous和Microsoft M *** Q等。

问题七:怎么选择合适的开源消息中间件 能选择的有三种:

1. ActiveMQ/ApolloMQ

优点:老牌的消息队列,使用J *** a语言编写。对JMS支持更好度,采用多线程并发,资源消耗比较大。如果你的主语言是J *** a,可以重点考虑。

缺点:由于历史悠久,历史包袱较多,版本更新很缓慢。集群模式需要依赖Zookeeper实现。最新架构的产品被命名为Apollo,号称下一代ActiveMQ,目前案例较少。

2. RocketMQ/Kafka

优点:专为海量消息传递打造,主张使用拉模式,天然的集群、HA、负载均衡支持。话说还是那句话,适合不适合看你有没有那么大的量。

缺点:所谓鱼和熊掌不可兼得,放弃了一些消息中间件的灵活性,使用的场景较窄,需关注你的业务模式是否契合,否则山寨变相使用很别扭。除此之外,RocketMQ没有.NET下的客户端可用。RocketMQ身出名门,但使用者不多,生态较小,毕竟消息量能达到这种体量的公司不多,你也可以直接去购买阿里云的消息服务。Kafka生态完善,其代码是用Scala语言写成,可靠性比RocketMQ低一些。

3. RabbitMQ

优点:生态丰富,使用者众,有很多人在前面踩坑。AMQP协议的领导实现,支持多种场景。淘宝的MySQL集群内部有使用它进行通讯,OpenStack开源云平台的通信组件,更先在金融行业得到运用。

缺点:Erlang代码你Hold得住不? 虽然Erlang是天然集群化的,但RabbitMQ在高可用方面做起来还不是特别得心应手,别相信 *** 。

问题八:什么是消息中间件,比如tonglink主要起什么作用 TongLINK/Q(简称TLQ)的主要功能是在应用程序之间海供可靠的消息 *** ,这些消息可以在不同的网络协议、不同的计算机系统和不同的应用软件之间传递。TongLINK/Q提供一个简单易用、高效可靠的分布式应用开发和运行平台,面向要求可靠消息(信息)传输的客户,即包括金融、电信、交通、能源、电子政务等高端客户,也包括大量中小企业客户。

中国中间件第一品牌东方通中间件

消息中间件(一)MQ详解及四大MQ比较

一、消息中间件相关知识

1、概述

消息队列已经逐渐成为企业IT系统内部通信的核心手段。它具有低耦合、可靠投递、广播、流量控制、最终一致性等一系列功能,成为异步RPC的主要手段之一。当今市面上有很多主流的消息中间件,如老牌的ActiveMQ、RabbitMQ,炙手可热的Kafka,阿里巴巴自主开发RocketMQ等。

2、消息中间件的组成

2.1 Broker

消息服务器,作为server提供消息核心服务

2.2 Producer

消息生产者,业务的发起方,负责生产消息传输给broker,

2.3 Consumer

消息消费者,业务的处理方,负责从broker获取消息并进行业务逻辑处理

2.4 Topic

2.5 Queue

2.6 Message

消息体,根据不同通信协议定义的固定格式进行编码的数据包,来封装业务数据,实现消息的传输

3 消息中间件模式分类

3.1 点对点

PTP点对点:使用queue作为通信载体

说明:

消息生产者生产消息发送到queue中,然后消息消费者从queue中取出并且消费消息。

消息被消费以后,queue中不再存储,所以消息消费者不可能消费到已经被消费的消息。 Queue支持存在多个消费者,但是对一个消息而言,只会有一个消费者可以消费。

说明:

queue实现了负载均衡,将producer生产的消息发送到消息队列中,由多个消费者消费。但一个消息只能被一个消费者接受,当没有消费者可用时,这个消息会被保存直到有一个可用的消费者。

4 消息中间件的优势

4.1 系统解耦

交互系统之间没有直接的调用关系,只是通过消息传输,故系统侵入性不强,耦合度低。

4.2 提高系统响应时间

例如原来的一套逻辑,完成支付可能涉及先修改订单状态、计算会员积分、通知物流配送几个逻辑才能完成;通过MQ架构设计,就可将紧急重要(需要立刻响应)的业务放到该调用方法中,响应要求不高的使用消息队列,放到MQ队列中,供消费者处理。

4.3 为大数据处理架构提供服务

通过消息作为整合,大数据的背景下,消息队列还与实时处理架构整合,为数据处理提供性能支持。

4.4 J *** a消息服务——JMS

J *** a消息服务(J *** a Message Service,JMS)应用程序接口是一个J *** a平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信。

5 消息中间件应用场景

5.1 异步通信

有些业务不想也不需要立即处理消息。消息队列提供了异步处理机制,允许用户把一个消息放入队列,但并不立即处理它。想向队列中放入多少消息就放多少,然后在需要的时候再去处理它们。

5.2 解耦

降低工程间的强依赖程度,针对异构系统进行适配。在项目启动之初来预测将来项目会碰到什么需求,是极其困难的。通过消息系统在处理过程中间插入了一个隐含的、基于数据的接口层,两边的处理过程都要实现这一接口,当应用发生变化时,可以独立的扩展或修改两边的处理过程,只要确保它们遵守同样的接口约束。

5.3 冗余

有些情况下,处理数据的过程会失败。除非数据被持久化,否则将造成丢失。消息队列把数据进行持久化直到它们已经被完全处理,通过这一方式规避了数据丢失风险。许多消息队列所采用的”插入-获取-删除”范式中,在把一个消息从队列中删除之前,需要你的处理系统明确的指出该消息已经被处理完毕,从而确保你的数据被安全的保存直到你使用完毕。

5.4 扩展性

因为消息队列解耦了你的处理过程,所以增大消息入队和处理的频率是很容易的,只要另外增加处理过程即可。不需要改变代码、不需要调节参数。便于分布式扩容。

5.5 过载保护

在访问量剧增的情况下,应用仍然需要继续发挥作用,但是这样的突发流量无法提取预知;如果以为了能处理这类瞬间峰值访问为标准来投入资源随时待命无疑是巨大的浪费。使用消息队列能够使关键组件顶住突发的访问压力,而不会因为突发的超负荷的请求而完全崩溃。

5.6 可恢复性

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

5.7 顺序保证

在大多使用场景下,数据处理的顺序都很重要。大部分消息队列本来就是排序的,并且能保证数据会按照特定的顺序来处理。

5.8 缓冲

在任何重要的系统中,都会有需要不同的处理时间的元素。消息队列通过一个缓冲层来帮助任务最高效率的执行,该缓冲有助于控制和优化数据流经过系统的速度。以调节系统响应时间。

5.9 数据流处理

分布式系统产生的海量数据流,如:业务日志、监控数据、用户行为等,针对这些数据流进行实时或批量采集汇总,然后进行大数据分析是当前互联网的必备技术,通过消息队列完成此类数据收集是更好度的选择。

6 消息中间件常用协议

6.1 AMQP协议

AMQP即Advanced Message Queuing Protocol,一个提供统一消息服务的应用层标准高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。基于此协议的客户端与消息中间件可传递消息,并不受客户端/中间件不同产品,不同开发语言等条件的限制。

优点:可靠、通用

6.2 MQTT协议

MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是IBM开发的一个即时通讯协议,有可能成为物联网的重要组成部分。该协议支持所有平台,几乎可以把所有联网物品和外部连接起来,被用来当做传感器和致动器(比如通过Twitter让房屋联网)的通信协议。

优点:格式简洁、占用带宽小、移动端通信、PUSH、嵌入式系统

6.3 STOMP协议

STOMP(Streaming Text Orientated Message Protocol)是流文本定向消息协议,是一种为MOM(Message Oriented Middleware,面向消息的中间件)设计的简单文本协议。STOMP提供一个可互操作的连接格式,允许客户端与任意STOMP消息 *** (Broker)进行交互。

优点:命令模式(非topic\queue模式)

6.4 XMPP协议

XMPP(可扩展消息处理现场协议,Extensible Messaging and Presence Protocol)是基于可扩展标记语言(XML)的协议,多用于即时消息(IM)以及 *** 现场探测。适用于服务器之间的准即时操作。核心是基于XML流传输,这个协议可能最终允许因特网用户向因特网上的其他任何人发送即时消息,即使其操作系统和浏览器不同。

优点:通用公开、兼容性强、可扩展、安全性高,但XML编码格式占用带宽大

6.5 其他基于TCP/IP自定义的协议

有些特殊框架(如:redis、kafka、zeroMq等)根据自身需要未严格遵循MQ规范,而是基于TCP\IP自行封装了一套协议,通过网络socket接口进行传输,实现了MQ的功能。

7 常见消息中间件MQ介绍

7.1 RocketMQ

阿里系下开源的一款分布式、队列模型的消息中间件,原名Metaq,3.0版本名称改为RocketMQ,是阿里参照kafka设计思想使用j *** a实现的一套mq。同时将阿里系内部多款mq产品(Notify、metaq)进行整合,只维护核心功能,去除了所有其他运行时依赖,保证核心功能最简化,在此基础上配合阿里上述其他开源产品实现不同场景下mq的架构,目前主要多用于订单交易系统。

具有以下特点:

官方提供了一些不同于kafka的对比差异:

7.2 RabbitMQ

使用Erlang编写的一个开源的消息队列,本身支持很多的协议:AMQP,XMPP, *** TP,STOMP,也正是如此,使的它变的非常重量级,更适合于企业级的开发。同时实现了Broker架构,核心思想是生产者不会将消息直接发送给队列,消息在发送给客户端时先在中心队列排队。对路由(Routing),负载均衡(Load balance)、数据持久化都有很好的支持。多用于进行企业级的ESB整合。

7.3 ActiveMQ

Apache下的一个子项目。使用J *** a完全支持JMS1.1和J2EE 1.4规范的 JMS Provider实现,少量代码就可以高效地实现高级应用场景。可插拔的传输协议支持,比如:in-VM, TCP, SSL, NIO, UDP, multicast, JGroups and JXTA transports。RabbitMQ、ZeroMQ、ActiveMQ均支持常用的多种语言客户端 C++、J *** a、.Net,、Python、 Php、 Ruby等。

7.4 Redis

使用C语言开发的一个Key-Value的NoSQL数据库,开发维护很活跃,虽然它是一个Key-Value数据库存储系统,但它本身支持MQ功能,所以完全可以当做一个轻量级的队列服务来使用。对于RabbitMQ和Redis的入队和出队操作,各执行100万次,每10万次记录一次执行时间。测试数据分为128Bytes、512Bytes、1K和10K四个不同大小的数据。实验表明:入队时,当数据比较小时Redis的性能要高于RabbitMQ,而如果数据大小超过了10K,Redis则慢的无法忍受;出队时,无论数据大小,Redis都表现出非常好的性能,而RabbitMQ的出队性能则远低于Redis。

7.5 Kafka

Apache下的一个子项目,使用scala实现的一个高性能分布式Publish/Subscribe消息队列系统,具有以下特性:

7.6 ZeroMQ

号称最快的消息队列系统,专门为高吞吐量/低延迟的场景开发,在金融界的应用中经常使用,偏重于实时数据通信场景。ZMQ能够实现RabbitMQ不擅长的高级/复杂的队列,但是开发人员需要自己组合多种技术框架,开发成本高。因此ZeroMQ具有一个独特的非中间件的模式,更像一个socket library,你不需要安装和运行一个消息服务器或中间件,因为你的应用程序本身就是使用ZeroMQ API完成逻辑服务的角色。但是ZeroMQ仅提供非持久性的队列,如果down机,数据将会丢失。如:Twitter的Storm中使用ZeroMQ作为数据流的传输。

ZeroMQ套接字是与传输层无关的:ZeroMQ套接字对所有传输层协议定义了统一的API接口。默认支持 进程内(inproc) ,进程间(IPC) ,多播,TCP协议,在不同的协议之间切换只要简单的改变连接字符串的前缀。可以在任何时候以最小的代价从进程间的本地通信切换到分布式下的TCP通信。ZeroMQ在背后处理连接建立,断开和重连逻辑。

特性:

二、主要消息中间件的比较

消息中间件定时任务区别

触发时间不同,使用范围不同。

1、消息中间件没有明确的触发时间,而定时任务具有明确的触发时间。

2、消息中间件是在系统内部完成,定时任务则可以在系统内使用消息传递代替。

什么是消息中间件,比如tonglink主要起什么作用

消息中间件是用于两个应用程序之间传输消息(数据包)用,有各种分类,TongLINK/Q和MQ是商业软件中最常用的两种消息中间件,因为这两种消息中间件保证消息的可靠性,如,用socket传输数据,收到后除自己解析组装外,如果应用程序崩溃,则数据丢失,如果数据银行账务,则造成很严重的后果。如果用消息中间件传输,则保证消息可靠到达,并且,采用事务机制,即使程序崩溃,数据消息不不会丢,除非事务提交。平时,我们启停机器时,要杀死正运行的进程,如果用socket,这时,杀死进程就会丢数据,如果用消息中间件,就不存在此问题,应用进程以及消息中间件核心进程,都可随便杀死,也不会影响消息的可靠到达。这是消息中间件的核心功能。市场上除这两款消息中间件外,其它的消息中件也有类似的功能,但事务一致性及可靠性上,需要自己测试检查。

消息中间件——RabbitMQ(四)命令行与管控台的基本操作!

在前面的文章中我们介绍过RabbitMQ的搭建: RabbitMQ的安装过 以及各大主流消息中间件的对比: ,本章就主要来介绍下我们之前安装的管控台是如何使用以及如何通过命令行进行操作。

rabbitmqctl stop_ *** :关闭应用

rabbitmqctl start_ *** :启动应用

rabbtmqctl status:节点状态

rabbitmqctl add_user username password:添加用户

rabbitmqctl list_users:列出所有用户

rabbitmqctl delete_user username:删除用户

rabbitmqctl clear_permissions - p vhostpath username: 清除用户权限

rabbitmqctl list_user_permissions_username: 列出用户权限

rabbitmqctl change_password username newpassword:修改密码

rabbitmqctl set_permissions -p vhostpath username ". " ". " ".*" :设置用户权限

涉及的用户命令还有许多,这里就不一一列举了。

rabbitmqctl add_vhost vhostpath:创建 ***

rabbitmqctl list_vhosts:列出所有 ***

rabbitmqctl list_permissions -p vhostpath:列出 *** 上所有权限

rabbitmqctl delete_vhost vhostpath:删除 ***

rabbitmqctl list_queues:查看所有队列信息

rabbitmqctl -p vhostpath purge_queue bule:清除队列里的消息

rabbitmqctl reset:移除所有数据,要在rabbitmqctl stop_ *** 之后使用

rabbitmqctl join_clust clusternode [--ram]:组成集群命令

rabbitmqctl clustr_status:查看集群状态

rabbitmqctl change_cluster_node_type disc|ram 修改集群节点的存储形式

rabbitmqctl forget_cluster_node [--offline] 忘记节点(摘除节点)

rabbitmqctl rename_cluster_node oldnode1 newnode1 [oldnode2] [newnode2..] (修改节点名称)

登录RabbitMQ web管理界面:

默认的初始用户名和密码为: guest

从图中可以看到:

Broker的属性

定义由 用户 , *** , 权限 , 参数 , 交换 , 队列 和 绑定 组成。 它们不包括队列的内容或集群名称。 独占队列不会被导出。

导入的定义将与当前定义合并。 如果在导入过程中发生错误,则所做的任何更改都不会回滚。

连接的属性

通道的属性

交换器属性

在Admin界面可以添加用户或者 *** 等操作。

参考文章:

;wfr=spiderfor=pc

推荐文章:

消息中间件——RabbitMQ(一)Windws/Linux环境搭建(完整版)

消息中间件——RabbitMQ(二)各大主流消息中间件综合对比介绍!

消息中间件——RabbitMQ(三)理解RabbitMQ核心概念和AMQP协议!

消息中间件的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于常用消息中间件、消息中间件的信息别忘了在本站进行查找喔。

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://www.sast-sy.com/ea1ddBj0EAgxXWgA.html

标签:中间件消息

发表评论:

管理员

  • 内容1434378
  • 积分0
  • 金币0

Copyright © 2022 四叶百科网 Inc. 保留所有权利。 Powered by ZFCMS 1.1.2

页面耗时0.0452秒, 内存占用1.78 MB, 访问数据库18次

粤ICP备21035477号