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 设置为这个… |
---|---|
durable |
|
Non-durable |
|
持久队列的名称由容器 ID 和链接名称组成,如 my-container-id:my-link-name
。
AMQ Broker 还支持 qpid-jms 客户端,无论用于地址的前缀如何,都将遵守其主题的使用。
3.2.2. 配置 AMQP 安全性
代理支持 AMQP SASL 身份验证。有关如何在代理中配置基于 SASL 的身份验证的详情,请参阅 安全性。