它们有许多共同的特点。但是有什么区别呢?
MOM 允许异步,而 SOA 不允许,这是唯一的区别吗?
SOA,即面向服务的架构,是一种架构,它定义了如何在不同应用程序之间构建对业务信息的访问。简而言之,通常,一个应用程序需要使用应用程序需要的一条信息(可能是订单文件或其他任何东西)来完成某些事情。另一个应用程序可能能够对该条信息进行相应的处理,因此它具有能力。然后第一个应用程序使用提供服务的第二个应用程序的服务(无论底层技术如何,可以是任何东西,例如 JMS、HTTP/SOAP、HTTP/REST、EMail、FTP 等)。为了完成这项工作,必须定义第一个应用程序和服务之间的合同,以清除诸如消息格式(XSD 或类似)、协议(HTTP/SOAP?JMS?)等内容。
另一方面,MOM(面向消息的中间件)只是一系列软件/中间件平台。它们是实际的实现,而不是像 SOA 这样的高级概念。它们可用于实现 SOA 架构、事件驱动架构或其他架构。通常,MOM 使用 MOM 服务器存储和转发消息的异步消息传递来丰富一组应用程序。通常,诸如事务、保证交付、故障转移、松散耦合和负载平衡之类的东西都内置在 MOM 实现中。MOM 的示例是IBM WebSphere MQ、Apache ActiveMQ、RabbitMQ、JBoss HornetQ等。
面向消息的中间件 (MOM) 是一种技术,而 SOA 是一种架构。尽管很多人在谈论 SOA 时会想到 Web 服务,但您也可以使用 MOM 来实现它(实际上在许多情况下这是更好的选择)