它们有许多共同的特性。但是有什么不同呢?
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来实现它(事实上,在许多情况下,这是更好的选择)