Apache ActiveMQ Artemis 拥有一个强大且灵活的核心,为其他协议的实现提供了基础。每个协议实现都将特定协议的概念映射到这个核心上。
代理自带一个直接与核心交互的客户端实现。它使用所谓的“核心”API,并通过“核心”协议进行网络通信。
1. 支持的协议
代理具有可插拔的协议体系结构。协议插件以协议模块的形式提供。每个协议模块都包含在代理的类路径中,并在启动时由代理加载。代理自带 5 个协议模块。
1.1. AMQP
AMQP 是一个用于互操作消息传递的规范。它还定义了一种线格式,因此任何 AMQP 客户端都可以与任何支持 AMQP 的消息传递系统一起使用。AMQP 客户端在许多不同的编程语言中可用。
Apache ActiveMQ Artemis 实现AMQP 1.0规范。任何支持 1.0 规范的客户端都能够与 Apache ActiveMQ Artemis 交互。
有关更多详细信息,请参阅AMQP。
1.2. MQTT
MQTT 是一种轻量级连接协议。它旨在在设备和网络受限的环境中运行。任何支持 3.1、3.1.1 或 5 规范的客户端都能够与 Apache ActiveMQ Artemis 交互。
有关更多详细信息,请参阅MQTT。
1.3. STOMP
Stomp 是一种非常简单的文本协议,用于与消息传递系统进行互操作。它定义了一种线格式,因此理论上任何 Stomp 客户端都可以与任何支持 Stomp 的消息传递系统一起使用。Stomp 客户端在许多不同的编程语言中可用。任何支持 1.0、1.1 或 1.2 规范的客户端都能够与 Apache ActiveMQ Artemis 交互。
有关更多详细信息,请参阅Stomp。
1.4. OpenWire
ActiveMQ Classic 定义了自己的线协议:OpenWire。为了支持 ActiveMQ “Classic” 客户端,Apache ActiveMQ Artemis 支持 OpenWire。任何 ActiveMQ 5.12.x 或更高版本都可以与 Apache ActiveMQ Artemis 一起使用。
有关更多详细信息,请参阅OpenWire。
1.5. Core
ActiveMQ Classic 定义了自己的线协议:OpenWire。为了支持 ActiveMQ “Classic” 客户端,Apache ActiveMQ Artemis 支持 OpenWire。任何 ActiveMQ 5.12.x 或更高版本都可以与 Apache ActiveMQ Artemis 一起使用。
有关更多详细信息,请参阅Core。
1.5.1. API 和其他接口
尽管 JMS 和 Jakarta Messaging 是标准化的 API,但它们没有定义网络协议。ActiveMQ Artemis JMS & Jakarta Messaging 客户端 是在核心协议之上实现的。我们还提供了一个客户端 JNDI 实现。
2. 配置接收器
为了使用特定协议,必须配置传输并启用所需的协议。这里有一个关于配置传输的完整部分此处。
ActiveMQ Artemis 发行版附带的默认配置中已定义了许多接收器,每个接收器都对应上述协议中的一个,另外还有一个支持所有协议的通用接收器。要启用特定接收器上的协议,只需将protocols
url 参数添加到接收器 url 中,其中值为一个或多个协议(以逗号分隔)。如果protocols
参数从 url 中省略,则会启用**所有**协议。
-
以下示例仅在端口 1883 上启用 MQTT
<acceptors> <acceptor>tcp://127.0.0.1:1883?protocols=MQTT</acceptor> </acceptors>
-
以下示例在端口 5672 上启用 MQTT 和 AMQP
<acceptors> <acceptor>tcp://127.0.0.1:5672?protocols=MQTT,AMQP</acceptor> </acceptors>
-
以下示例在
61616
上启用**所有**协议<acceptors> <acceptor>tcp://127.0.0.1:61616</acceptor> </acceptors>
以下是支持的协议及其在protocols
url 参数中使用的对应值。
协议 | protocols 值 |
---|---|
Core(Artemis & HornetQ 原生) |
|
OpenWire(5.x 原生) |
|
AMQP |
|
MQTT |
|
STOMP |
|