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-sn
,但当前的 AMQ Broker 版本将只支持每个会话的单一事务。
AMQP 中的分布式事务(XA)详情在规格的 1.0 版本中没有提供。如果您的环境需要支持分布式事务,建议您使用 AMQ 核心协议 JMS。
有关协议及其功能的更多信息,请参阅 AMQP 1.0 规格。
3.2.1. 使用 AMQP 链接作为主题
与 JMS 不同,AMQP 协议不包括主题。但是,仍然可以将 AMQP 使用者或接收器视为订阅,而不只是队列上的消费者。默认情况下,任何附加到前缀 jms.topic.
地址的链接被视为订阅,并且创建了订阅队列。根据如何配置 Terminus Durability 的方式,订阅队列具有危险或易失性,如下表中捕获:
为只使用多播队列创建此类订阅… | 将 Terminus Durability 设置为这个… |
---|---|
durable |
|
non-durable |
|
可写队列的名称由容器 ID 和链接名称组成,如 my-container-id:my-link-name
。
AMQ Broker 还支持 qpid-jms 客户端,无论用于地址的前缀是什么,都将遵守其主题的使用。
3.2.2. 配置 AMQP 安全性
代理支持 AMQP SASL 身份验证。有关如何在代理上配置基于 SASL 的身份验证的更多信息,请参阅 安全性。