Red Hat AMQ 7 简介


Red Hat AMQ 2021.Q4

功能和组件概述

摘要

本文档重点介绍 Red Hat AMQ 7 的功能和组件。它还展示了本发行版本中支持的常见用例和设计模式。

第 1 章 关于 Red Hat AMQ 7

Red Hat AMQ 为互联网扩展应用程序提供快速、轻量级和安全的消息传递。AMQ Broker 支持多种协议和快速消息持久性。AMQ Interconnect 利用 AMQP 协议在网络间分发和扩展您的消息传递资源。AMQ 客户端为多种语言和平台提供一系列消息传递 API。

将 AMQ 组件视为 toolbox 中的工具。它们可以一起使用或单独用来构建和维护消息传递应用程序,AMQP 是将其绑定到的 toolbox 中的粘滞。AMQ 组件共享一个通用管理控制台,因此您可以从一个接口管理它们。

注意

Red Hat AMQ 7 包括 AMQ Streams,它为在 OpenShift Container Platform 上运行 Apache Kafka 提供容器镜像和 Operator。AMQ Streams 不支持 AMQP。

1.1. 主要特性

AMQ 允许开发人员构建快速、可靠且易于管理的消息传递应用程序。

在互联网规模上的消息传递

AMQ 包含用于构建高级多数据中心消息传递网络的工具。它可以在无缝消息传递结构中连接客户端、代理和独立服务。

顶级安全性和性能

AMQ 提供现代 SSL/TLS 加密和可扩展的 SASL 身份验证。AMQ 提供快速、高容量的消息和类领先的 JMS 性能。

广泛的平台和语言支持

AMQ 使用多种语言和操作系统,因此您的不同应用程序组件可以进行通信。AMQ 支持 C++、Java、JavaScript、Python、Ruby 和 .NET 应用程序,以及基于 Linux、Windows 和 JVM 的环境。

专注于标准

AMQ 实施 Java JMS 1.1 和 2.0 API 规格。其组件支持 ISO 标准 AMQP 1.0 和 MQTT 消息传递协议,以及 STOMP 和 WebSocket。

集中管理

使用 AMQ,您可以从单个管理界面管理所有 AMQ 组件。您可以使用 JMX 或 REST 接口以编程方式管理服务器。

第 2 章 组件概述

Red Hat AMQ 由 AMQ Broker、AMQ Interconnect 和 AMQ 客户端组成。它们协同工作,在分布式应用中启用网络通信。

2.1. AMQ Broker

AMQ Broker 是一个功能齐全的、面向消息的中间件代理。它提供高级寻址和队列、快速消息持久性和高可用性。AMQ Broker 支持多个协议和操作环境,可让您使用现有的资产。AMQ Broker 支持与红帽 JBoss Enterprise Application Platform 集成。

如需更多信息,请参阅 AMQ Broker 入门

2.2. AMQ Interconnect

AMQ Interconnect 在启用了 AMQP 的端点(包括客户端、代理和独立服务)之间提供灵活的消息路由。通过将单一连接连接到 AMQ Interconnect 路由器网络,客户端可以与连接到网络的任何其他端点交换消息。

AMQ Interconnect 不使用 master-slave 集群来实现高可用性。它通常部署到带有冗余网络路径的多个路由器的拓扑中,后者用于提供可靠的连接。AMQ Interconnect 可以跨网络分发消息传递工作负载,并实现新级别的扩展,且延迟非常低。

如需更多信息,请参阅 对 AMQ Interconnect 2.0 使用 AMQ Interconnect 路由器和 发行注记

2.3. AMQ 客户端

AMQ 客户端是 AMQP 1.0 和 JMS 客户端、适配器和库的集合。它包括 JMS 2.0 支持和新的、事件驱动的 API,以启用集成到现有应用程序中。

如需更多信息,请参阅 AMQ 客户端概述

AMQP 客户端
JMS 客户端
适配器和库

2.4. 组件兼容性

下表列出了 AMQ 组件支持的语言、平台和协议。请注意,支持相同协议的任何组件都可以互操作,即使它们的语言和平台不同。例如,AMQ Python 可以与 AMQ JMS 通信。

Expand
表 2.1. AMQ 组件兼容性
组件语言平台协议

AMQ Broker

-

JVM

AMQP 1.0, MQTT, OpenWire, STOMP, Core Protocol

AMQ Interconnect

-

Linux

AMQP 1.0

AMQ C++

C++

Linux、Windows

AMQP 1.0

AMQ JavaScript

JavaScript

Node.js,浏览器

AMQP 1.0

AMQ JMS

Java

JVM

AMQP 1.0

AMQ .NET

C#

.NET

AMQP 1.0

AMQ Python

Python

Linux

AMQP 1.0

AMQ Ruby

Ruby

Linux

AMQP 1.0

AMQ Spring Boot Starter

Java

JVM

AMQP 1.0

AMQ 核心协议 JMS

Java

JVM

核心协议

AMQ OpenWire JMS

Java

JVM

OpenWire

AMQ JMS Pool

Java

JVM

-

如需更多信息,请参阅 支持的 Red Hat AMQ 7 配置

第 3 章 常见部署模式

Red Hat AMQ 7 可以在各种拓扑中设置。以下是您可以使用 AMQ 组件实现的一些常见部署模式。

3.1. Central 代理

中央代理模式相对容易设置和维护。它还相对可靠。路由通常是本地的,因为代理及其客户端始终位于彼此的一个网络跃点内,无论添加多少个节点。这个模式也称为 hub 和 spoke,中央代理是 hub,客户端是 spoke。

图 3.1. Central 代理模式

唯一关键元素是中央代理节点。您的维护工作重点是保持这个代理可供其客户端使用。

3.2. 路由消息传递

当将消息路由到远程目的地时,代理将其存储在本地队列中,然后将其转发到其目的地。但是,有时应用程序需要实时发送请求和响应消息,并让代理存储和转发消息过于昂贵。使用 AMQ,您可以使用路由器来代替代理,以避免这种成本。与代理不同,路由器不会在将消息转发到目的地之前存储消息。相反,它充当轻量级并直接连接两个端点。

图 3.2. 无代理路由消息传递模式

3.3. 高可用性代理

为确保代理可用于其客户端,请部署高度可用的(HA)主从对来创建备份组。例如,您可能在两个节点上部署两个 master-slave 组。此类部署会为每个活跃代理提供备份,如下图中所示。

图 3.3. master-slave 对

在正常操作条件下,一个 master 代理在每个节点上活跃,可以是物理服务器或虚拟机。如果一个节点失败,则另一个节点上的从设备接管。结果是驻留在同一健康节点上的两个活跃的代理。

通过部署主从对,您可以扩展此类备份组的整个网络。这个类型的大型部署可用于在多个代理间分布消息处理负载。下图中的代理网络由 8 个分布的 master-slave 组组成。

图 3.4. master-slave 网络

3.4. 负载均衡器后面的路由器对

在负载平衡器后面部署两个路由器可为单一数据中心部署提供高可用性、弹性和可扩展性。端点使其连接到一个已知的 URL,由负载均衡器支持。接下来,负载平衡器在路由器之间分散传入的连接,以便分发连接和消息传递负载。如果其中一个路由器失败,则连接到它的端点将重新连接到剩余的活动路由器。

图 3.5. 负载均衡器后面的路由器对

为了获得更大的可扩展性,您可以使用更多路由器,例如三个或四个路由器。每个路由器直接连接到所有其他路由器。

3.5. DMZ 中的路由器对

在这种部署架构中,路由器网络在外部世界的客户端和支持企业应用程序的代理之间提供保护层和隔离。

图 3.6. DMZ 中的路由器对

有关 DMZ 拓扑的重要备注:

  • 部署中连接的安全性与用于外部客户端的安全性分开。例如,您的部署可能会使用私有证书颁发机构(CA)进行内部安全,向每个路由器和代理发布 x.509 证书以进行身份验证,但外部用户可能会使用不同的公共 CA。
  • 企业和 DMZ 之间的路由器连接始终从企业建立到 DMZ 以实现安全性。因此,不允许来自企业外部的连接。但是,AMQP 协议在建立连接后启用双向通信。

3.6. 不同数据中心的路由器对

您可以在跨越多个位置的 AMQ 组件中使用更复杂的拓扑。例如,您可以在每个四个位置上部署一对负载均衡的路由器。您可以在中心包含两个主路由器,以便在所有位置之间提供冗余连接。下图显示了跨越多个位置的部署示例。

图 3.7. 多个互连的路由器

更新于 2023-09-19

法律通告

Copyright © 2023 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat