当前位置: 首页 > 网络应用技术

经常消息中间件分析摘要:这些特征是什么?如何选择?

时间:2023-03-08 12:42:10 网络应用技术

  说到消息,据估计每个人都可以说或多或少。ActiveMQ,RabbitMQ,RocketMQ,Kafka等以及JMS,AMQP和其他协议。但是,我应该在开发过程中选择哪个?

  让我们谈谈消息中间件中的几个协议。

  1.1.1 JMS简介首次谈论JMS。

  JMS的全名是JAVA消息服务,类似于JDBC,与JDBC不同,JMS是Javaee的消息服务接口。JMS有两个版本:

  与两者相比,后者主要简化用于接收消息的代码。

  考虑到消息的中间部分是一个非常常见的工具,Javaee为此制定了特殊的规范JMS。

  但是,像JDBC一样,JMS是一个规范。他只是一组接口,不包括特定的实现。如果我们想使用JMS,通常有必要实现相应的实现,就像使用JDBC需要相应的驱动程序一样。

  1.1.2 JMS模型JMS消息服务支持两个消息模型:

  在点-To -point或队列模型下,生产者向特定队列发布了一条消息,消费者从队列中读取消息。此外,生产者知道消费者的队列,并直接将消息发送到相应的队列。这是点 - 点消息模型,总结为:

  发布者/订户模型支持将消息发布给特定消息主题。消费者可以定义他们感兴趣的主题。这是另一侧的消息模型。该模型可以总结为:

  1.1.3 JMS实现了支持JMS的开源。

  一些商业支持JMS消息是::

  他们中的许多人被Song GE的考古学挖掘出来。实际上,我们的日常开发可能更多,这可能是Kafka和ActiveMQ。

  1.2.1 AMQP简介与消息中间件相关的另一个代理商是AMQP。

  消息队列的需求历史悠久。在1980年代,在金融交易中,高盛(Goldman Sachs)和其他公司使用了Teknekron的产品。当时,消息队列软件被调用:信息总线(TIB).TIB是由电信和通信公司采用的,而路透社收购了Teknekron.Teknekron.Tebm。此前,IBM开发了MQSeries,Microsoft开发了Microsoft Message Message Queue(MSMQ)。这些商业MQ供应商是制造商已锁定并且价格很高。在2001年,Java消息服务试图解决锁定和互动性的问题,但对于应用程序而言,它更加麻烦。

  因此,在2004年,摩根大通(Morgan Chase)和伊马特里克斯(Imatrix)开始了高级消息排队协议(AMQP)的开发标准。2006年在2007年发布。2007年,兔技术公司是根据由AMQP标准开发的RabbitMQ 1.0发布的。

  RabbitMQ的最新版本目前为3.5.7,基于AMQP 0-9-1。

  在AMQP协议中,该消息涉及以下概念:

  1.2.2 AMQP实现以查看AMQP协议中的一些特定消息。

  也许有一些朋友很奇怪和activemq?实际上,ActiveMQ不仅支持JM,而且支持AMQP。

  此外,还有Ali生产的RocketMQ,这是众所周知的。这是一个自定义集。社区还提供JMS,但它并不成熟。

  物联网开发的朋友通常应该联系该协议。MQTT(消息排队遥测传输)是由IBM开发的真实时间通信协议。目前,它似乎是物联网开发中最重要的协议之一。该协议支持所有平台,该平台可以将所有网络项目和外部外部通信协议作为传感器和执行器连接起来(例如,使房屋通过Twitter连接)。

  XMPP(可扩展消息处理站点协议,可扩展性消息传递和存在协议)是基于XML的协议,主要用于即时消息(IM)和在线检测。它适用于服务器之间的准实体操作。核心基于XML。该协议最终可能允许Internet用户在Internet上的任何人发送即时消息,即使其操作系统和浏览器不同。它的优势是通用的开放性,兼容性,可伸缩性和高安全性。缺点是XML编码格式占据了很大的带宽。

  对于我们的Java工程师,每个人都应该与JMS和AMQP协议有更多联系。由于JMS和AMQP都是协议,因此两者之间有什么区别?请查看以下图片:

  这张照片非常清楚,所以我毫不犹豫。

  ActiveMQ是Apache下的子项目。它使用JMS提供商完全支持JMS1.1和J2EE1.4规格。少数代码可以有效地实施高级应用程序方案,并支持可插入的传输协议,例如:

  ActiveMQ支持许多常用的语言客户端,例如C ++,Java,.net,Python,Php,Ruby,等。

  当前的ActiveMQ分为两个版本:

  此处的ActiveMQ Classic是原始ActiveMQ,并且ActiveMQ Artemis是根据Redhat捐赠的Hornetq服务器代码开发的。更令人惊讶的是,后者不仅支持JMS协议,而且支持AMQP协议,Stomp Stomp Stomp和mqtt。可以说,后者的游戏玩法非常丰富。

  因此,当您使用它时,建议直接选择ActiveMQ Artemis。

  RabbitMQ是AMQP系统下最重要的产品。它基于Erlang语言发展。据估计,许多人因兔子安装而受到酷刑。Song GE建议直接与Docker,Save and Save -Fre -Free(公共帐户回复Docker教程)一起安装RabbitMQ。

  RABBITMQ支持AMQP,XMPP,SMTP,Stomp和其他协议。它具有强大的功能,适合企业级别的发展。

  查看兔子的结构图:

  关于RabbitMQ,兄弟Song最近发送了十个教程的教程,这将不再尴尬。

  RocketMQ是Ali开源的分布式消息中间部分。它以前称为Metaq,从3.0版中更名为RocketMQ。这是ALI实施的一组MQ,参考KAFKA Design Ideas.RocketMQ集成了许多内部MQ产品(Notify,Metaq),仅维护核心功能,删除所有其他运行时依赖性,以确保最简化的核心功能。在此基础上,架构目前主要用于订单交易系统。

  RocketMQ具有以下特征:

  对于Java工程师来说,这也是经常使用的MQ。

  Kafka是Apache下的开源处理平台,由Scala和Java.kafka撰写,是一个高吞吐量分布分发订阅消息系统,可以处理网站中消费者的所有操作(Web浏览,搜索,其他用户的操作)。Kafka的目的是通过Hadoop的并行加载机制统一在线和离线消息处理,也是通过群集提供真实的时间新闻。

  Kafka具有以下特征:

  在大数据开发中,每个人都可能经常与Kafka接触,并且Java开发也将与之联系,但接触的接触可能相对较少。

  Zeromq声称是最快的新闻队列系统。它是为高吞吐量/低删除场景开发而开发的。它通常用于金融行业的应用,并专注于真实的数据通信方案.veromq不是单独的服务,而是嵌入式库。它封装了诸如网络通信,消息队列,线程调度和其他功能之类的功能。它为上层提供了简单的API。该应用程序使用加载库文件调用API函数以实现高性能网络通信

  Zeromq的特征:

  此外,Redis也可以是消息队列。Song Brother在介绍Redis作为正常消息队列和延迟消息队列之前还发布了一篇文章。

  最后,让我们通过图片比较每个消息的中间部分。

  小朋友在公共帐户的背景中回复MQPKMQ,您可以获得此Excel表链接。

  好吧,只是拉很多。

猜你喜欢