我一直在试图弄清楚什么是面向消息的中间件,但一直找不到任何对我有意义的非企业真实世界示例。谁能给我一个清晰易懂的解释 MOM 是什么,以及它在企业之外如何使用的一些简单示例?
5 回答
面向消息的中间件是一种使用消息交换而不是函数调用/共享内存的基础设施。这是一个设计原则,因此可以在任何地方使用。它可能在异构/高可用性/高性能系统中最有用。
正如我刚刚回答了一个有点类似的问题 - 我想回答你的问题,但没有额外的术语,最后以实用的方式澄清 MOM 是什么。这里有几个简单的英语定义几个组件(随着你对 MOM 的深入研究,这些术语最终会一次又一次地出现 - 而且问题也被标记rabbitmq
):
- MOM - 是一种方法,一种分布式系统的架构,即整个分布式系统的中间层,其中有很多内部通信(一个组件正在查询数据,然后需要将其发送给另一个组件,它会做一些处理数据),因此组件必须在它们之间共享信息/数据。
- 消息代理- 是具有处理消息的任何系统(在 MOM 中),或者更准确地说,它将消息路由到特定的消费者/接收者。消息代理通常构建在 MOM 之上。MOM 提供应用程序之间的基本通信,以及诸如消息持久性和保证交付之类的东西。“消息代理是面向消息的中间件的构建块。”
- Rabbitmq - 消息代理;一个 MOM 实现;AMQP 的开源实现;根据维基百科:
RabbitMQ 是一个开源消息代理软件(有时称为面向消息的中间件),它实现了高级消息队列协议 (AMQP)。
我在这里提到了 Rabbitmq,以进一步阐明 MOM,它一直在我们周围使用。
面向消息的中间件- 是一种方法,一种分布式系统的架构,即整个分布式系统的中间层,其中有很多内部通信,因此组件必须在它们之间共享信息/数据,例如 - 一个组件正在查询数据,然后需要将其发送到另一个组件,该组件将对数据进行一些处理。简而言之,它是一种设计系统的方法,是的,取决于总体要求,即我们将开发一个分布式系统,并进行一些内部通信。MOM 架构/决策的最大优势是组件的解耦,即如果我们要更改数据查询组件,它不会对数据处理组件产生影响,因为它们通过 MOM 进行通信(例如
最后的 MOM 只是一个设计决策,我们使用中间件来粘合我们的系统(分布式)组件,中间件用于处理它们之间的通信,以消息的形式(即 JSON)。
一个非常相关的 SO 问题和答案 -消息代理与 MOM(面向消息的中间件)
面向消息的中间件是用于在计算机和数据网络上发送和接收消息的框架系统。中间件消息传递为代理、应用程序服务器和业务流程自动化提供了基础。
查看解释它的漂亮草图 http://www.onlinemq.com/wiki/index.php/Image:Flow-diagram.jpg
简而言之
面向消息的中间件 (MOM):面向消息的中间件 (MOM) 的目的是使不兼容或非常不同的应用程序/系统/平台(端点)能够以共享格式进行通信。
用于消息传递的主要组件
系统上的应用程序如何与中间件软件通信?
消息队列接口 (MQI): 这是一个具有不同功能(调用)的 API,使业务应用程序能够与队列管理器 (QM) 进行通信。
系统如何在它们之间发送消息?:
消息队列 (MQ): 通过向队列发送/接收消息(数据)而不是直接发送/接收应用程序/系统来完成通信。
注意:有多种类型的队列在可以发送/接收消息之前/之后提供不同的操作。
代理: 代理在应用程序/系统之间转换这些消息。
队列管理器(QM): 它管理队列并与不同系统上的其他队列管理器进行通信,以便来自系统 A 上的队列(A)的消息将被发送并放在系统 B 上的队列(B)上。
消息通道: 队列管理器通过消息通道与其他队列管理器通信。
查看 IBM 版本 MOM 的技术说明: https ://www.ibm.com/support/knowledgecenter/SSFKSJ_8.0.0/com.ibm.mq.pro.doc/q002620_.htm
看看这个频道 - 它有关于这个主题的简明扼要的解释。
https://www.youtube.com/watch?v=5-0sv-sRmGw&list=PLqnWYrfCqvm5ZdT4je7vjdyLf9_dPK6Kc&index=33
使用 MOM 发送给客户端的消息被收集和存储,直到它们被采取行动,而客户端继续其他过程。