JMS架构和JMS API架构

时间:2020-02-23 14:35:20  来源:igfitidea点击:

在本文中,我们将讨论JMS体系结构,即JMS系统如何彼此异步交互。

JMS体系结构

下图详细显示了典型的消息传递系统/JMS系统体系结构:

注意:-两种JMS消息传递模型(P2P模型和Pub/Sub模型)都遵循相同的体系结构。
它们仅在用于交换消息的目标类型上有所不同。

邮件系统中的常见步骤:

  • 系统管理员使用JMS Provider提供的管理控制台,并在JMS Provider的JNDI存储库中配置所有必需的管理对象,例如ConnectionFactory和Destinations。

  • Application Developer编写Producer和Consumer应用程序并将其部署到Server中。

  • 当客户端访问JMS Sender组件(程序)时,JMS Sender从JMS提供程序JNDI查找托管对象,然后将消息发送到目的地(示例队列)。

  • JMS目标(队列或者主题)保留所有JMS消息(由JMS Sender发送),直到被使用者使用为止。

  • 当客户端访问JMS接收器组件(程序)时,JMS接收器从JMS提供程序JNDI查找受管理对象。
    注册并从目标(示例队列)接收消息。

  • 如果消息传递系统(即服务器)由于某些原因崩溃,则系统管理员将使用JMS Provider Admin Console进行监视,查找问题的根本原因,并将消息还原到JMS目标中。

  • 如果目标中有任何未交付的JMS消息(由于消息系统之间存在某些消息协定),则系统管理员将使用JMS Provider Admin Console修复这些消息协定问题并将其重新发送到目标中,以便目标使用者可以接收这些消息并处理它们。

  • 如果我们使用"持久目标"或者"持久目标",则JMS Server使用" JMS存储"来存储未传递的消息。

  • 持久目标或者持久目标存储消息,直到它们传递到所有订户并从它们接收ACK。

  • JMS存储可能是某种平面数据文件,或者某些JMS服务器使用某种数据库来存储消息。
    平面数据文件可以是XML文件或者文本文件。

说明:-在基于Java EE 7的应用程序中,JMS客户端(JMS发送方或者接收方)不会从JMS提供程序查找受管理的对象。

而是,JMS Provider将通过使用依赖注入将它们注入到所需位置的JMS客户端中。
我们将在高级主题中讨论此技术。

高级JMS架构

典型的JMS应用程序具有以下高级体系结构。

JAVA Sender应用程序使用JMS API创建与JMS服务器的连接,创建JMS消息并将其发送到目的地。

以相同的方式,JAVA接收器应用程序使用JMS API创建与JMS服务器的连接,接收JMS消息并将ACK(确认)发送给发件人。

低级JMS架构

典型的JMS应用程序具有以下低级体系结构。

如上图所示,我们可以在任何JMS提供程序中使用相同的JMS应用程序,并在服务器端进行一些最少的配置。

JMS API架构

JMS API遵循几乎类似的体系结构。
首先使用JMS Server创建连接,然后准备消息/接收消息,处理消息并关闭连接。