在这篇文章中,我将会讨论面向消息的中间件(Message Orientated Middleware) 以及如何经过JMS来实现。另外,我还将讨论适用于使用JMS的典型用例,以及用于讨论消息传递解决方案(如发布者/发送方,目的地/主题/队列, 订阅者/接收者)的不一样术语。我将介绍两种消息拓扑:点对点和发布订阅。java
在Java EE应用的典型架构中,数据访问层有不少和数据存储层通讯的技术,好比Java Persistence API(JPI), Java Connector Architecture(JCA),这些技术将应用程序链接到了企业信息系统(EIS)和Java消息服务系统(JMS)web
JMS用于在分布式系统中经过松耦合,异步,可伸缩性和安全的方式传递消息。应用程序经过以消息为导向的中间件发送和接收消息。 异步。意味着消息的发送方和接收方不须要同时与消息队列交互。所以,接收方能够在消息发送后的某个时间接收消息。express
依赖与使用场景来使用JMS,可是一般,至少会有如下一种状况。api
在讨论JMS时,有一些有用的术语能够帮助咱们传达咱们的意图。安全
在点对点设置中,消息的来源被称为发送方,而目的地被称为队列。这里消息被发送到一个目的地,只有一个消息的实例被接收方接收。若是接收方关闭,则消息将在队列中保存,直到接收方从新启动并再次运行。服务器
发布订阅消息拓扑结构 session
在发布/订阅设置中,消息的来源被称为发布者,目标被称为主题。在这里,许多订阅者能够订阅一个主题,每一个订阅者都接收到消息的一个实例。所以,一个消息被发送给许多等待的订阅者。若是订阅服务器关闭,它将不会接收到消息,当它再次运行时。架构