我一直在努力弄清楚什么是消息导向的中间件,但是我没有能够找到任何非企业级的现实世界示例,这让我感到困惑。有人能给我一个明确而易于理解的 MOM 解释吗?如果可能的话,还能提供一些简单的在企业以外使用 MOM 的示例吗?
我一直在努力弄清楚什么是消息导向的中间件,但是我没有能够找到任何非企业级的现实世界示例,这让我感到困惑。有人能给我一个明确而易于理解的 MOM 解释吗?如果可能的话,还能提供一些简单的在企业以外使用 MOM 的示例吗?
面向消息的中间件是一种基础设施,它使用消息交换而不是函数调用/共享内存。这是一种设计原则,因此可以在任何地方使用。它可能在异构/高可用性/高性能系统中最为有用。
我刚回答了一个类似的问题 - 我想回答你的问题,但是加上一些额外的术语,最后解释一下MOM在实际中是什么。以下是几个基本英文定义的组件(随着你深入研究MOM,这些术语最终会再次出现 - 同时该问题标记为rabbitmq
):
RabbitMQ是一种开源消息代理软件(有时称为面向消息的中间件),它实现了高级消息队列协议(AMQP)。
我在这里提到Rabbitmq,进一步澄清了MOM,以我们周围的使用方式。
最终,MOM 只是一种设计决策,我们使用一个中间件来粘合系统(分布式)组件,一个用于处理它们之间的通信,以消息的形式(即 JSON)。
一篇非常相关的SO问题和答案 - 消息代理 vs. 消息中间件(MOM)
简而言之
面向消息的中间件(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
面向消息的中间件是在计算机和数据网络上发送和接收消息的框架系统。中间件消息提供了 Broker、应用服务器和业务流程自动化的基础。
查看漂亮的草图,解释了它 http://www.onlinemq.com/wiki/index.php/Image:Flow-diagram.jpg
使用 MOM(消息中间件),发送给客户端的消息会被收集和存储,直到它们被处理,而客户端可以继续执行其他进程。