搜索

AMQ 客户端概述

download PDF
Red Hat AMQ 2021.Q3

用于 AMQ 客户端 2.10

摘要

本文档重点介绍了 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 模型基于消息发送的生命周期。在链接的每端,都会创建一个代表消息传输的实体,它存在一段时间,最后是"集集",这意味着它可以忘记。在交付的组合生命周期中,有四个感兴趣的事件:

  • 交付是在发件人处创建的。
  • 传输在接收器上创建。
  • 发件人负责授课。
  • 传输是在接收方提供的。

由于发送方和接收方同时运行,这些事件可能会以各种订单发生,这些事件的顺序会产生不同的消息发送保障。

最快交付一次

最一次的交付也被称为"弃用"或"光纤和忘记"交付。

  1. 交付是在发件人处创建的。
  2. 发件人负责授课。
  3. 传输在接收器上创建。
  4. 传输是在接收方提供的。

在这种配置中,发件人在到达接收方之前忘记(即忘记)发货商,如果发生任何机票,则发件人没有回发基础。

此模式适用于可接受临时消息丢失(如定期传感器数据)或应用本身可检测故障和重新发送的应用。

at-least-once 交付
  1. 交付是在发件人处创建的。
  2. 传输在接收器上创建。
  3. 传输是在接收方提供的。
  4. 发件人负责授课。

在这种配置中,接收方在收到交付时巩固了发送方,而发件人一旦看到接收方,即即开始装配。如果出差时出现任何情况,则发件人可以返回。但是,接收方已经忘记了发送,因此重新发送将导致邮件发送重复。应用可以使用唯一的消息 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 客户端不同。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.