什么是 Apache ActiveMQ?

发布时间 2023-06-02 17:38:16作者: 叶痕秋

什么是 ActiveMQ?

ActiveMQ 是一种流行的消息传递服务,可促进企业系统中大规模的不同数据。在本 ActiveMQ 教程中,我们概述了 ActiveMQ、它的优点、它的工作原理以及何时应该使用它。
什么是 ActiveMQ?
ActiveMQ 是一种流行的开源消息传递服务,它构建在 Java 之上。它用作面向消息的中间件 ( MoM )。

ActiveMQ 的设计目的是在两个或多个应用程序之间发送消息,就像所有面向消息的中间件一样。
这里推荐一个视频课程:
https://www.bilibili.com/video/BV1f24y1N72X/?vd_source=0ba66e578821564652f75cbe299199c8

ActiveMQ 有什么用?

与任何其他消息代理一样,ActiveMQ 用作多个组件之间的通信桥梁,这些组件可以托管在单独的服务器上或可以用不同的编程语言编写。

像这样的消息代理经常出现在企业系统中——或者任何具有复杂架构的系统中。实施的目标是在该系统的组件之间建立可靠的通信。

一个很好的例子是金融和银行业,其中高可用性系统是必不可少的。速度在这个行业很重要,但比这更重要的是整个系统的可靠性。

尽管我们都希望一切都保持 100% 的正常运行时间,但服务离线的情况仍然很少见。在这种情况下你会怎么做?

如果没有像 ActiveMQ 这样的消息代理,就会出现问题。
将您的消息放入消息队列通常适用于这种情况。消息不会立即传送和处理。相反,它将在服务的另一端重新联机时进行处理。
file
使用像 ActiveMQ 这样的消息代理,您可以确保您的消息在服务器在线时得到传递。
上面的例子是一个小众案例。但消息传递的整体用例是异步调整流量的能力。可能存在服务仍然在线的情况,但它可能无法像消息生成到系统中那样快速地处理消息。或者如果没有一些填充,它可能无法处理突发事件。

因此,如果您有一个系统——无论何时何地,无论现在还是以后,发送消息都是必须的——那么像 ActiveMQ 这样的消息代理就是您所需要的。

什么是 Apache ActiveMQ 代理?

Apache ActiveMQ 代理是 Java 消息服务或 JMS 的实现。JMS 是一种 Java 规范,它允许应用程序以简单和标准的方式在彼此之间来回发送数据。

在像 ActiveMQ 这样的消息传递系统出现之前,很难(如果不是不可能的话)“联合”应用程序:

  • 是用不同的语言写成的。
  • 驻留在异构平台上。
  • 使用不同的数据结构和协议。
    Java 的早期目标是提供一种具有 C 的强大功能且不受其跨平台问题阻碍的语言。JMS 的出现源于对将非常不同的系统彼此联合的日益增长的需求。

在 ActiveMQ 之前,这意味着针对本机工具和库构建源代码。替代方案是在单独的操作系统上直接移植或重写应用程序。

JMS 和 ActiveMQ 有什么区别?

ActiveMQ 是一个 JMS 提供者。JMS 提供程序形成了软件框架,以促进在应用程序中使用 JMS 概念。允许客户端连接到它并使用这些消息传递概念的 ActiveMQ 单个节点称为“ActiveMQ Broker”。

因此,ActiveMQ 是一个实现 JMS 的消息代理。使用 ActiveMQ 对许多企业都很重要——尤其是企业。

企业通过并购等商业行为感受到这种差异。这就需要维护越来越多样化的业务应用程序集合。随着企业的发展,允许所有这些平台共享数据的需求也在增长。当今存在许多有助于解决此问题的体系结构模式。

其他 JMS 供应商

JMS 提供程序的其他一些示例是:

大黄蜂Q
兔MQ
索尼克MQ
Windows Azure 消息传递
Apache 代理
ActiveMQ 只是您堆栈的一部分
ActiveMQ 只是您的开源堆栈的一部分。您可能正在利用其他技术。您还可以从更多开源技术中受益。构建您的组织理想的开源堆栈。使用 OpenLogic Stack Builder 从我们的堆栈专家那里获取自定义报告。

堆栈生成器

ActiveMQ 架构概述
ActiveMQ 的结构由称为消息、队列和主题的数据模式组成。

消息就像它们听起来的那样,是可以在不同系统之间传输的数据有效负载。这些有效载荷可以具有与之关联的标头和属性,这些标头和属性可以:

对它们进行分类
控制路由的各个部分
促进在连接的应用程序网络中移动有效载荷
这是一个基本的 JMS 结构,例如 ActiveMQ:

activemq 是如何工作的
负载本身可以是纯 Java 实现中的任何 Java 对象。但它通常是某种形式的短信。请注意,文本也可以是标记格式,例如 XML 或 JSON。消息传递系统的目的是以标准方式在异构系统之间移动这些有效负载。

ActiveMQ 作为企业级消息传递解决方案
企业级消息传递解决方案可以做到这一点,同时还保持数据完整性,保证没有数据丢失,同时考虑到高可用性、安全性、可恢复性和其他常见的企业问题。

我们网络中的应用程序本身被认为是端点。它们有两类。用于读取或接收消息的入站端点称为消费者,用于将数据发送到消息系统的出站端点称为生产者。

这是以编程方式处理的。端点是在与消息系统交互的程序的上下文中定义的。

ActiveMQ 消息如何工作

一旦消息进入系统,它们就会被安排成两种模式:队列和主题。队列是代理和客户端生成和使用的消息的FIFO(先进先出)管道。生产者创建消息并将它们推送到这些队列中。然后消费者应用程序轮询和收集这些消息,一次一条消息。

主题是基于订阅的消息广播频道。当生产应用程序发送消息时,“订阅”该主题的多个接收者会收到消息的广播。在主题消息传递的上下文中,这个生产应用程序有时被称为“发布者”,

所有这些组件都只是 JMS 规范的一部分,但并不是任何一个特定的软件。为了在现实生活中实现该规范,我们可以创建 JMS 规范的特定于供应商的实现,称为 JMS 提供程序。

总而言之,队列和主题之间的主要区别是:

主题实现发布和订阅工作流。
队列实现负载平衡工作流。
ActiveMQ 队列和主题之间差异的图示。

ActiveMQ 关键函数

除了 JMS 之外,ActiveMQ 还提供了额外的功能,例如:

Java 的本机 ActiveMQ 连接工厂对象。
强大的可观察性功能及其详细的 JMX 指标和统计引擎。
通过 Jolokia 和 HawtIO 扩展仪表板。
JAAS 安全性。
多种连接协议。
本机 HA 和 DR 功能。
水平和垂直刻度的内置功能。
Apache ActiveMQ 5 与 Apache ActiveMQ 6
Apache ActiveMQ 5 实现了 JMS 1.1 规范。ActiveMQ 6 (Artemis) 将实施 JMS 2.0。

除了上述 JMS 概念之外,ActiveMQ 还提供持久性。这允许在代理崩溃时“重播”消息。除此之外,持久性允许主题订阅者在与代理的连接中断时接收广播消息。

你应该使用 ActiveMQ 吗?

ActiveMQ 是一个成熟且被广泛采用的平台。1,000 家公司使用它。它是迄今为止最灵活的 OSS 消息代理。

似乎这还不够,它还与Apache Camel一起发布,并与 Apache Camel 产品共享开发人员和提交者。这使它在设计复杂的消息传递模式方面具有极高的复杂性。

ActiveMQ 是理想的消息传递解决方案
Apache ActiveMQ 在宽松的 Apache 2.0 ASF 许可下是免费和开源的。它得到了一个多产且响应迅速的开发人员社区的支持,并且是由现在无处不在的企业集成模式 (EIP) 架构的一些早期创建者设想的。

将这些模式与 JMS 放在一起可以很容易地理解ActiveMQ 的工作原理。您可以在 ActiveMQ 中使用多种连接协议,允许它们在使用不同语言(如 Java、C++、.NET、PHP 等)编码的应用程序之间提供高度规范化的连接点。

这使得 ActiveMQ 成为企业理想的免费消息传递解决方案。用户通常从 WebSphereMQ、Oracle AQ、TIBCO EMS 和/或 MSMQ 等商业中间件迁移到 ActiveMQ。

ActiveMQ 数据规模

ActiveMQ 可以针对大型数据集进行大规模调整,例如 CERN 大型强子对撞机生成的数据集。ActiveMQ 可以针对多种流量和实施模型进行配置,并具有强大的统计和指标引擎,可公开有关代理健康状况以及消息流量和客户端状态的数量和大小的重要详细信息。这些指标可以被流行的监控框架使用,使 ActiveMQ 成为一个高度可观察的解决方案。

充分利用 ActiveMQ

虽然 Apache ActiveMQ 不是唯一可用的免费消息传递解决方案,但它在平衡其多功能性和企业就绪性方面脱颖而出。您可以快速采用 ActiveMQ。任何熟悉 JMS 的人都可以访问它。ActiveMQ 多产的社区将确保产品的持续生存能力。ActiveMQ 6 承诺将这种用途扩展到下一代企业消息传递解决方案中。

获得 ActiveMQ 的技术支持和指导

想要开始使用 Apache ActiveMQ?立即联系专家,了解我们如何帮助您充分利用 ActiveMQ,包括ActiveMQ 支持。

本文由博客群发一文多发等运营工具平台 OpenWrite 发布