4.12.2. 自动创建到期资源
常见用例是根据其原始地址隔离过期消息。例如,您可以选择将过期的消息路由到名为 EXP.stocks
的
到期队列。同样,您可能将过期的消息从名为 Order 的地址路由 到
名为 EXP.orders
的到期队列。
借助这种路由模式,可以轻松跟踪、检查和管理过期的消息。不过,这样的模式很难在主要使用自动创建地址和队列的环境中实施。在这种类型的环境中,管理员不需要额外的工作来手动创建地址和队列来存放过期的消息。
作为解决方案,您可以将代理配置为自动创建资源(即强制和队列),以处理给定地址或 一组 地址的过期消息。以下步骤演示了一个示例。
先决条件
- 您已为给定地址或 一组 地址配置了到期地址。如需更多信息,请参阅 第 4.12.1 节 “配置消息过期”。
流程
-
打开
<broker_instance_dir>/etc/broker.xml
配置文件。 找到您之前添加到配置文件中的
<address-setting> 元素
,以定义匹配地址或地址 集的 到期地址。例如:<configuration ...> <core ...> ... <address-settings> ... <address-setting match="stocks"> ... <expiry-address>ExpiryAddress</expiry-address> ... </address-setting> ... <address-settings> <configuration ...>
在
<address-setting>
元素中,添加指示代理自动创建到期资源(即地址和队列)以及如何命名这些资源的配置项目。例如:<configuration ...> <core ...> ... <address-settings> ... <address-setting match="stocks"> ... <expiry-address>ExpiryAddress</expiry-address> <auto-create-expiry-resources>true</auto-create-expiry-resources> <expiry-queue-prefix>EXP.</expiry-queue-prefix> <expiry-queue-suffix></expiry-queue-suffix> ... </address-setting> ... <address-settings> <configuration ...>
auto-create-expiry-resources
指定代理是否自动创建一个到期地址和队列来接收过期的消息。默认值为
false
。如果参数值设为
true
,代理会自动创建一个<address>
元素来定义到期地址和关联的到期队列。auto-created<address>
元素的 name 值与为<expiry-address>
指定的名称值匹配。自动创建的到期队列具有
多播
路由类型。默认情况下,代理会命名到期队列以匹配最初发送已过期消息的地址,例如:代理还为使用
_AMQ_ORIG_ADDRESS
属性的到期队列定义过滤器。此过滤器确保到期队列仅接收发送到对应原始地址的消息。expiry-queue-prefix
代理应用到自动创建的到期队列的名称的前缀。默认值为
EXP。
当您定义前缀值或保留默认值时,到期队列的名称是前缀和原始地址的串联,如
EXP.stocks
。expiry-queue-suffix
- 代理应用到自动创建的到期队列的名称的后缀。未定义默认值(即代理不应用后缀)。
您可以使用自身队列名称(例如,使用 AMQ 代理核心协议 JMS 客户端)或使用完全限定队列名称(例如,使用其他 JMS 客户端)直接访问到期队列队列。
由于会自动创建到期地址和队列,因此与删除自动创建的地址和队列相关的任何地址设置也适用于这些到期资源。
其它资源
- 有关用于配置自动删除自动创建的地址和队列的地址设置的详情请参考 第 4.8.2 节 “配置自动创建和删除地址和队列”。