3.2. 使用带有网络连接的 AMQP
代理支持 AMQP 1.0 规格。AMQP 链接是源与目标之间消息的单向协议,即客户端和代理。
流程
-
打开 &
lt;broker_instance_dir> /etc/broker.xml
配置文件。 -
添加或配置一个
acceptor
来接收 AMQP 客户端,方法是包括一个值为AMQP
的protocols
参数作为 URI 的一部分。如下例所示:
<acceptors> <acceptor name="amqp-acceptor">tcp://localhost:5672?protocols=AMQP</acceptor> ... </acceptors>
在上例中,代理接受端口 5672 上的 AMQP 1.0 客户端,这是默认的 AMQP 端口。
AMQP 链接有两个端点,即发送者和接收器。当发送者传输消息时,代理将其转换为内部格式,以便将其转发到代理上的目的地。接收器连接到代理中的目的地,并在发送前将消息转换为 AMQP。
如果 AMQP 链接是动态的,则会创建一个临时队列,并将远程源或远程目标地址设置为临时队列的名称。如果链接不是动态的,则使用远程目标或源的地址用于队列。如果远程目标或源不存在,则会发送异常。
链接目标也可以是协调器,用于将底层会话作为事务处理,可以是回滚或提交它。
AMQP 允许每个会话使用多个事务,amqp:multi-txns-per-ssn
,但当前版本的 AMQ Broker 将仅支持每个会话的单一事务。
AMQP 中的分布式事务(XA)详情在规格的 1.0 版本中没有提供。如果您的环境需要支持分布式事务,建议您使用 AMQ 核心协议 JMS。
有关协议及其功能的更多信息,请参阅 AMQP 1.0 规格。
3.2.1. 使用 AMQP 链接作为主题
与 JMS 不同,AMQP 协议不包括主题。但是,仍然可以将 AMQP 用户或接收器视为订阅,而不只是队列中的用户。默认情况下,任何附加到前缀 jms.topic.
的地址的链接都被视为订阅,并创建一个订阅队列。订阅队列是持久的或易失性,具体取决于如何配置Terminus Durability,如下表中捕获:
为仅多播队列… 创建这类订阅 | 将 Terminus Durability 设置为 this… |
---|---|
durable |
|
非持久性 |
|
持久队列的名称由容器 ID 和链接名称组成,如 my-container-id:my-link-name
。
AMQ Broker 还支持 qpid-jms 客户端,并将遵守其主题的使用,而不考虑用于地址的前缀。
3.2.2. 配置 AMQP 安全性
代理支持 AMQP SASL 身份验证。有关如何在代理上配置基于 SASL 的身份验证的更多信息,请参阅 安全性。