JMS 代表 Java 消息服务,它是 Java 中访问消息中间件服务器的标准。这是一个 JMS 介绍教程,为您提供消息传递和 JMS 的简要概述。您将了解使用 JMS 的优势以及 JMS 中的不同消息传递模型。

什么是消息传递?

消息传递跨各种应用程序或服务交换业务数据的过程。消息通常是其他应用程序或服务使用的异步请求、响应、报告或事件。这些消息包含重要信息。

消息传递为微服务架构提供了可扩展性。消息传递也传统上用于面向服务的架构,以在它们之间建立异步且可靠的通信。

消息系统也称为面向消息的中间件产品。目前有多种消息中间件可供选择,例如 ActiveMQ、RabbitMQ、ActiveMQ Artemis、Apache Kafka、应用服务器(Glassfish、Wildfly、Websphere MQ)等。

使用消息中间件的优点

  • 可靠性– 消息中间件保证交付。如果消费者因某种原因宕机,消息系统会存储消息,直到其再次启动。
  • 异步– JMS 是异步的,发送者和接收者不需要互相等待。
  • 易于集成– 多个应用程序可以用不同的编程语言编写或运行在不同的服务器上。只要它们使用相同的协议,就可以使用消息中间件在它们之间建立通信。
  • 可扩展性——消息传递有助于向多个接收者广播,从而有助于实现可扩展性。
  • 灵活性——您可以为不同的消息分配不同的协议,这使您在设计架构时具有很大的灵活性。

什么是 JMS?

目前有几种企业消息中间件(面向消息的中间件)产品,如 TIBCO MQ、Apache ActiveMQ、Apache Kafka、RabbitMQ、ActiveMQ Artemis、IBM MQ 等。

JMS 提供了标准的 Java API,这意味着 Java 程序可以创建、发送、接收和读取企业消息系统的消息。我们将探讨 JMS 1.x 和 2.0 API 标准。

并非所有企业消息中间件都实现 JMS 标准。实现 JMS 标准的中间件称为 JMS 提供程序。其中包括 Apache ActiveMQ、Apache ActiveMQ Artem、Oracle WebLogic Server、Glassfish、IBM MQ、Jboss Wildfly、Apache Qpid 等。无论您使用哪种实现,如果您坚持 JMS 标准,切换供应商都很简单。

JMS 不可互操作,这意味着它主要用于用 Java 或 JVM 语言编写的应用程序。如果您想使用具有更好互操作性支持的消息传递协议(可以在 NodeJS、Python、C# 等中工作),请查看AMQP(高级消息队列协议),例如 RabbitMQ

JMS 标准的局限性

JMS 标准不包括以下功能,因为 JMS 仅用于发送和接收消息。

  1. 负载平衡/容错
  2. 错误/建议通知
  3. JMS 提供程序的管理 API
  4. 安全
  5. 没有消息类型存储库定义

JMS 中的消息传递模型

JMS 支持两种主要的消息传递样式,如下所示。作为 JMS 介绍的一部分,我们在此仅讨论这些类型,本教程的后面部分将通过几个示例介绍每种类型。

  • 点对点 (PTP) – 在 PTP 模型中,发送方通过名为Queue的中介将消息发送到另一个客户端(接收方)。只有一个接收方读取该消息。

  • 发布和订阅 (pub/sub) – 在 Pub/Sub 模型中,客户端通过名为Topic的中介向多个接收者发送消息。发送者将消息发布到特定主题,多个接收者订阅该主题。

JMS 应用程序的组件

一个典型的JMS应用程序由以下几个部分组成。

  • JMS 客户端– 发送和接收消息的 Java 代码。
  • 非 JMS 客户端– 利用系统的本机 API。
  • 消息– 正在发送或接收的业务数据。
  • JMS 提供程序– 实现 JMS 以及其他管理功能的消息系统,也称为 MOM(面向消息的中间件)。
  • 管理对象– 它们基本上是 JMS 提供程序中预先配置的目标(队列、主题)和连接工厂。

JMS 中的安全功能

JMS 不提供控制或配置消息完整性或消息隐私的功能。预计许多 JMS 提供商将提供此类功能。这将由 JMS 提供商使用特定的管理工具来处理。

现在,您已经通过本 JMS 入门教程对消息传递和 JMS 有了深入的了解。接下来,我们将安装和设置 JMS 消息传递服务器。

原文连接:JMS introduction – Java Message Service