什么是消息导向中间件?

14

我一直在努力弄清楚什么是消息导向的中间件,但是我没有能够找到任何非企业级的现实世界示例,这让我感到困惑。有人能给我一个明确而易于理解的 MOM 解释吗?如果可能的话,还能提供一些简单的在企业以外使用 MOM 的示例吗?


哪里有编程内容? - Mitch Wheat
4
据我所知,Stack Overflow有大量非编程类问题。比如,“X的最佳书籍是什么?”“Y有哪些用例?”例如,您发布的这个问题也没有明确的编程内容:(http://stackoverflow.com/questions/165985/resources-to-create-applications-with-a-great-user-experience)。我看不出这些问题与我的问题有什么不同。我无法完全弄清楚MOM是什么以及它的用途是什么。显然,这是程序员感兴趣的技术,所以我认为它非常适合SO的主题。 - jammur
虽然Stack Overflow以前对这类问题的限制比较宽松,但随着Stack Exchange网站家族的不断壮大,其对于话题外问题的执行变得更加严格了。许多旧问题现在都会被关闭。请记住,程序员相关但非编程方面的讨论可以在programmers.stackexchange.com上进行。至于这个问题,在我(尽管可能有误)的判断中,它是可以回答的,并且属于适当的话题。 - user1228
5个回答

6

面向消息的中间件是一种基础设施,它使用消息交换而不是函数调用/共享内存。这是一种设计原则,因此可以在任何地方使用。它可能在异构/高可用性/高性能系统中最为有用。


4

我刚回答了一个类似的问题 - 我想回答你的问题,但是加上一些额外的术语,最后解释一下MOM在实际中是什么。以下是几个基本英文定义的组件(随着你深入研究MOM,这些术语最终会再次出现 - 同时该问题标记为rabbitmq):

  • MOM - 是一种分布式系统的方法,一种中间层架构,用于整个分布式系统,其中有大量的内部通信(组件正在查询数据,然后需要将其发送到另一个组件,该组件将对数据进行一些处理),因此组件必须相互共享信息/数据。
  • 消息代理 - 是任何处理消息的系统(在MOM中),更确切地说是将消息路由到特定的消费者/接收者的系统。消息代理通常建立在MOM之上。 MOM提供了应用程序之间的基本通信以及诸如消息持久性和保证交付之类的功能。"消息代理是面向消息的中间件的构建块。"
  • Rabbitmq - 一种消息代理; MOM实现; AMQP的开源实现;根据维基百科:

    RabbitMQ是一种开源消息代理软件(有时称为面向消息的中间件),它实现了高级消息队列协议(AMQP)。

我在这里提到Rabbitmq,进一步澄清了MOM,以我们周围的使用方式。


消息中间件 - 是一种分布式系统的方法和架构,即整个分布式系统的中间层,在其中有很多内部通信,因此组件必须相互共享信息/数据。例如,一个组件正在查询数据,然后需要将其发送到另一个组件,该组件将对数据进行处理。简而言之,这是一种设计系统的方式,根据总体要求,我们将开发具有某些内部通信的分布式系统。 MOM 架构/决策的最大优势是解耦组件,即如果我们将更改数据查询组件,则不会对数据处理组件产生影响,因为它们通过 MOM 进行通信(例如 Rabbitmq 集群)- 数据处理组件以消息形式获取数据。

最终,MOM 只是一种设计决策,我们使用一个中间件来粘合系统(分布式)组件,一个用于处理它们之间的通信,以消息的形式(即 JSON)。


一篇非常相关的SO问题和答案 - 消息代理 vs. 消息中间件(MOM)


1

简而言之

面向消息的中间件(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


1

0

使用 MOM(消息中间件),发送给客户端的消息会被收集和存储,直到它们被处理,而客户端可以继续执行其他进程。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接