20.6.2. 配置 JMS 地址设置

JMS 子系统有几个可配置选项,它们控制消息如何和何时递送、可以多少次重试、何时过期。这些配置选项都存在于 <address-settings> 配置元素里。
地址配置的一个常见功能是映射多个地址的语法,也称作通配符。
通配符语法

地址通配符可用来映射多个类似的地址到单个语句,就像多个系统使用星号( *)字符来映射多个文件或字符串。下面的字符在通配符语句里都有特定的含义。

表 20.5. JMS 通配符语法

字符 描述
. (单个句号) 表示通配符表达式里单词间的空格。
# (井字键) 匹配零或多个单词的任意序列。
* (星号) 匹配单个单词。

表 20.6. JMS 通配符示例

实例 描述
news.europe.#
匹配 news.europenews.europe.sportnews.europe.politic,但不匹配 news.usaeurope
news.*
匹配 news.europe 但不匹配 news.europe.sport
news.*.sport
匹配 news.europe.sportnews.usa.sport 但不匹配 news.europe.politics

例 20.2. 默认的地址设置配置

这个例子里的值适用于本节的剩余内容。
<address-settings>
    <!--default for catch all-->
    <address-setting match="#">
        <dead-letter-address>jms.queue.DLQ</dead-letter-address>
        <expiry-address>jms.queue.ExpiryQueue</expiry-address>
        <redelivery-delay>0</redelivery-delay>
        <max-size-bytes>10485760</max-size-bytes>
        <address-full-policy>BLOCK</address-full-policy>
        <message-counter-history-day-limit>10</message-counter-history-day-limit>
    </address-setting>
</address-settings>

表 20.7. JMS 地址设置的描述

元素 描述 默认值 类型
address-full-policy
确定当已指定 max-size-bytes 的地址已满时发生的事情。
PAGE
STRING
dead-letter-address
如果指定了 Dead Letter 地址,如果 max-delivery-attempts 次递送尝试已失败,消息会移动到这个地址。否则,未递送的消息将被舍弃。这里允许使用通配符。
jms.queue.DLQ
STRING
expiry-address
如果指定了过期地址,过期的消息将被送到这个地址或匹配的地址,而不会被舍弃。这里允许使用通配符。
jms.queue.ExpiryQueue
STRING
last-value-queue
定义队列是否只使用最后的值。
false
BOOLEAN
max-delivery-attempts
在消息被发送到 dead-letter-address 或舍弃前重新递送的最多次数。
10
INT
max-size-bytes
最大值(字节)。
10485760L
LONG
message-counter-history-day-limit
消息计数器历史的每日限制。
10
INT
page-max-cache-size
在页面导航过程中保持在内存里以优化 IO 的页面文件的数量。
5
INT
page-size-bytes
页面大小。
5
INT
redelivery-delay
在重新递送消息间延迟的时间,单位为毫秒。如果为 0,重递送将无限期进行下去。
0L
LONG
redistribution-delay
当队列上最后一个消费者关闭时重新发布任何消息前等待的时间。
-1L
LONG
send-to-dla-on-no-route
设置消息不路由至任何队列而发送至 Dead Letter 地址(DLA)的条件的参数。
false
BOOLEAN
  • 配置地址设置和模式属性

    选择管理 CLI 或管理控制台来配置您的模式属性。
    • 用管理 CLI 配置地址设置

      使用管理 CLI 配置地址设置。
      1. 添加新的模式

        如果有需要,请使用 add 操作来创建新的地址设置。您可以在管理 CLI 会话的根目录里运行这个命令,下面的例子创建了一个名为 patternname 的模式,它的 max-delivery-attempts 属性声明为 5。下面展示了对独立服务器和受管域的 full 配置集的编辑。
        [standalone@localhost:9999 /] /subsystem=messaging/hornetq-server=default/address-setting=patternname/:add(max-delivery-attempts=5)
        [domain@localhost:9999 /] /profile=full/subsystem=messaging/hornetq-server=default/address-setting=patternname/:add(max-delivery-attempts=5)
      2. 编辑模式属性

        使用 write 操作来编写新的属性的值。您可以使用 tab completion 来帮助输入并提示所有可用的值。下面的例子将 max-delivery-attempts 的值更新为 10
        [standalone@localhost:9999 /] /subsystem=messaging/hornetq-server=default/address-setting=patternname/:write-attribute(name=max-delivery-attempts,value=10)
        [domain@localhost:9999 /] /profile=full/subsystem=messaging/hornetq-server=default/address-setting=patternname/:write-attribute(name=max-delivery-attempts,value=10)
      3. 确认模式属性

        通过 include-runtime=true 参数运行 read-resource 操作来确认值已修改以开放服务器模型里所有当前的值。
        [standalone@localhost:9999 /] /subsystem=messaging/hornetq-server=default/address-setting=patternname/:read-resource
        [domain@localhost:9999 /] /profile=full/subsystem=messaging/hornetq-server=default/address-setting=patternname/:read-resource
    • 用管理控制台配置地址设置

      使用管理控制台配置地址设置。
      1. 登录至受管域或独立服务器的管理控制台。
      2. 选择屏幕顶部的 Configuration 标签页。对于域模式,在屏幕左上角的 Profile 菜单里选择配置集。只有 fullfull-ha 配置集启用了 messaging 子系统。
      3. 展开 Messaging 菜单,然后选择 Destinations
      4. JMS 供应商列表将会出现。在 default 配置里只有一个供应商,就是default。点击 View 链接查看这个供应商的详细设置。
      5. 点击 Addressing Settings 标签页。点击 Add 按钮添加新模式,或者选择已有模式并点击 Edit 按钮更新设置。
      6. 如果您在添加新的模式,Pattern 字段引用 address-setting 元素的 match 参数。您也可以编辑e Dead Letter Address, Expiry Address, Redelivery DelayMax Delivery Attempts。其他选项需要用管理 CLI 进行配置。