AMQ 客户端概述
用于 AMQ 客户端 2.10
摘要
使开源包含更多
红帽承诺替换我们的代码、文档和网页属性中存在问题的语言。我们从这四个术语开始: master、slave、blacklist 和 whitelist。这些更改将在即将发行的几个发行本中逐渐实施。详情请查看 CTO Chris Wright 信息。
AMQ 客户端是 AMQP 1.0 和 JMS 客户端、适配器和库的套件。它包括 JMS 2.0 支持和新的、事件驱动的 API,以实现与现有应用程序的集成。
AMQ 客户端是红帽 AMQ 的一部分。如需更多信息,请参阅 引入 Red Hat AMQ 7。
第 1 章 主要特性
- 开放标准协议 - AMQP 1.0
- 行业标准 API - JMS 1.1 和 2.0
- 新的事件驱动 API - 快速、高效的消息传递,随处集成
- 广泛的语言支持 - C++、Java、Java、Java、Python、Ruby 和 .NET
- 广泛可用性 - Linux、Windows 和基于 JVM 的环境
第 2 章 组件
2.1. AMQP 客户端
AMQ 客户端包括一组 AMQP 1.0 消息传递 API。AMQP 是具有丰富消息传递功能的 ISO 标准、通用的消息传递协议。AMQ Broker 和 AMQ Interconnect 提供 AMQP 1.0 支持,因此可与任何 AMQP 1.0 客户端互操作。
2.2. JMS 客户端
AMQ 客户端提供多种广泛使用的 Java 消息服务(JMS)API 实施。
- AMQ JMS - AMQ JMS 提供完整的 AMQP 1.0 支持,并可与任何 AMQ AMQP 1.0 服务器或服务配合使用。
- AMQ 核心协议 JMS - 为支持基于 ActiveMQ Artemis 核心协议的现有应用,AMQ 包括 AMQ 核心协议 JMS 客户端。
2.3. 适配器和库
AMQ 客户端包括用于与其他平台和组件集成的组件。
- AMQ JMS Pool - 为支持有效使用 JMS 资源,AMQ 包括 AMQ JMS 池库。它允许重复利用 JMS API 定义的标准生命周期之外的连接资源。
- AMQ Spring Boot Starter - AMQ Spring Boot Starter 允许您构建使用 AMQP 1.0 消息传递的独立 Spring 应用。
2.4. 组件兼容性
下表列出了 AMQ 客户端组件的支持语言、平台、协议和服务器。
组件 | 语言 | 平台 | 协议 | 服务器和服务 |
---|---|---|---|---|
AMQ C++ | C++ | Linux、Windows | AMQP 1.0 | AMQ Broker、AMQ Interconnect 和 A-MQ 6 |
AMQ JavaScript | JavaScript | Linux、Windows、浏览器 | AMQP 1.0 | AMQ Broker、AMQ Interconnect 和 A-MQ 6 |
AMQ JMS | Java | JVM | AMQP 1.0 | AMQ Broker、AMQ Interconnect 和 A-MQ 6 |
AMQ .NET | C# | Linux、Windows | AMQP 1.0 | AMQ Broker、AMQ Interconnect 和 A-MQ 6 |
AMQ Python | Python | Linux、Windows | AMQP 1.0 | AMQ Broker、AMQ Interconnect 和 A-MQ 6 |
AMQ Ruby | Ruby | Linux | AMQP 1.0 | AMQ Broker、AMQ Interconnect 和 A-MQ 6 |
AMQ Spring Boot Starter | Java | JVM | AMQP 1.0 | AMQ Broker、AMQ Interconnect 和 A-MQ 6 |
AMQ 核心协议 JMS | Java | JVM | 核心协议 | AMQ Broker 和 A-MQ 6 |
AMQ JMS Pool | Java | JVM | - | - |
如需更多信息,请参阅 支持的 Red Hat AMQ 7 配置。
第 3 章 事件驱动的 API
AMQ 客户端提供的许多 API 都是异步、事件驱动的 API。其中包括 C++、JavaScript、Python 和 Ruby API。
这些 API 通过执行应用程序事件处理功能来响应网络活动,从而发挥作用。库监控网络 I/O,并触发事件。事件处理程序按顺序在主库线程上运行。
由于事件处理程序在主库线程上运行,处理程序代码不得包含任何长时间运行的阻止操作。在事件处理程序中阻止所有库执行.如果您需要执行较长的阻塞操作,则必须在一个单独的线程中调用它。事件驱动的 API 包括跨线程通信功能,以支持库线程和应用程序线程之间的协调。
在事件处理程序中长时间运行的阻止调用会停止所有库执行,从而阻止库处理其他事件并执行定期任务。始终在单独的应用程序线程中启动长时间运行的阻止程序。
第 4 章 AMQP
AMQP 是一种开放互联网协议,用于可靠发送和接收消息。它得到了多个软件供应商和主要机构的支持。AMQP 1.0 于 2012 年成为 OASIS 标准,2014 年成为 ISO 标准。
- 具有会话多路复用的帧协议
- 支持对等和客户端-服务器连接
- 为无丢失数据交换提供标准类型系统
- 提供流程控制、心跳和资源限制,以提高分布式系统中的可靠性
- 使用空间效率的二进制编码和管道来减少延迟
4.1. AMQP 交付保证
解决的 AMQP 模型基于消息发送的生命周期。在链接的每端,都会创建一个代表消息传输的实体,它存在一段时间,最后是"集集",这意味着它可以忘记。在交付的组合生命周期中,有四个感兴趣的事件:
- 交付是在发件人处创建的。
- 传输在接收器上创建。
- 发件人负责授课。
- 传输是在接收方提供的。
由于发送方和接收方同时运行,这些事件可能会以各种订单发生,这些事件的顺序会产生不同的消息发送保障。
最快交付一次
最一次的交付也被称为"弃用"或"光纤和忘记"交付。
- 交付是在发件人处创建的。
- 发件人负责授课。
- 传输在接收器上创建。
- 传输是在接收方提供的。
在这种配置中,发件人在到达接收方之前忘记(即忘记)发货商,如果发生任何机票,则发件人没有回发基础。
此模式适用于可接受临时消息丢失(如定期传感器数据)或应用本身可检测故障和重新发送的应用。
at-least-once 交付
- 交付是在发件人处创建的。
- 传输在接收器上创建。
- 传输是在接收方提供的。
- 发件人负责授课。
在这种配置中,接收方在收到交付时巩固了发送方,而发件人一旦看到接收方,即即开始装配。如果出差时出现任何情况,则发件人可以返回。但是,接收方已经忘记了发送,因此重新发送将导致邮件发送重复。应用可以使用唯一的消息 ID 来过滤重复项。
第 5 章 重要备注
5.1. 首选客户端
通常,支持 AMQP 1.0 标准的 AMQ 客户端是新应用程序开发的首选。但是,适用以下例外情况:
- 如果您的实施需要分布式事务,请使用 AMQ 核心协议 JMS 客户端。
- 如果您的域中需要 MQTT 或 STOMP(例如用于 IoT 应用程序),请使用社区支持的 MQTT 或 STOMP 客户端。
5.2. 旧客户端
AMQ OpenWire JMS 客户端已弃用
AMQ OpenWire JMS 客户端现已在 AMQ 7 中弃用。建议此客户端的用户迁移到 AMQ JMS 或 AMQ 核心协议 JMS。
弃用 CMS 和 NMS API
ActiveMQ CMS 和 NMS 消息传递 API 在 AMQ 7 中弃用。建议 CMS API 用户迁移到 AMQ C++,NMS API 用户迁移到 AMQ .NET。CMS 和 NMS API 的功能可能会在 AMQ 7 中减少。
弃用旧的 AMQ C++ 客户端
传统的 AMQ C++ 客户端(之前在 MRG 消息传递中提供的 C++ 客户端)已在 AMQ 7 中弃用。建议此 API 的用户迁移到 AMQ C++。
Core API 不支持
不支持 Artemis Core API 客户端。此客户端与支持的 AMQ 核心协议 JMS 客户端不同。
第 6 章 重要链接
2021-08-31 15:44:56 +1000 修订