3.2. 将 AMQP 与网络连接一起使用
代理支持 AMQP 1.0 规范。AMQP 链接是用于源和目标(即客户端和代理)之间消息的单向协议。
流程
-
打开
<broker_instance_dir>/etc/broker.xml
配置文件。 -
通过包含值 AMQP 作为 URI 一部分的
protocol
参数来添加或配置接收器以
接收AMQP
客户端,如下例所示:
<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 使用者或接收方视为订阅,而不仅仅是队列上的使用者。默认情况下,附加到带有 prefix jms.topic
的地址的任何接收链接都将被视为订阅,并创建订阅队列。订阅队列会持久化或易失性,具体取决于 Terminus Durability 的配置方式,如下表所示:
要为仅多播队列创建这类订阅… | 将 Terminus Durability 设置为 this… |
---|---|
Durable |
|
non-durable |
|
持久队列的名称由容器 ID 和链接名称组成,如 my-container-id:my-link-name
。
AMQ Broker 还支持 qpid-jms 客户端,无论地址使用的前缀是什么,都将尊重其主题的使用。