20.6.2. 配置 JMS 地址设置
JMS 子系统有几个可配置选项,它们控制消息如何和何时递送、可以多少次重试、何时过期。这些配置选项都存在于
<address-settings>
配置元素里。
地址配置的一个常见功能是映射多个地址的语法,也称作通配符。
通配符语法
地址通配符可用来映射多个类似的地址到单个语句,就像多个系统使用星号( *)字符来映射多个文件或字符串。下面的字符在通配符语句里都有特定的含义。
字符 | 描述 |
---|---|
. (单个句号) | 表示通配符表达式里单词间的空格。 |
# (井字键) | 匹配零或多个单词的任意序列。 |
* (星号) | 匹配单个单词。 |
实例 | 描述 |
---|---|
news.europe.# |
匹配
news.europe 、news.europe.sport 、news.europe.politic ,但不匹配 news.usa 或 europe 。
|
news.* |
匹配
news.europe 但不匹配 news.europe.sport 。
|
news.*.sport |
匹配
news.europe.sport 和 news.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>
元素 | 描述 | 默认值 | 类型 |
---|---|---|---|
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 配置地址设置。添加新的模式
如果有需要,请使用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)
编辑模式属性
使用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)
确认模式属性
通过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
用管理控制台配置地址设置
使用管理控制台配置地址设置。- 登录至受管域或独立服务器的管理控制台。
- 选择屏幕顶部的 Configuration 标签页。对于域模式,在屏幕左上角的 Profile 菜单里选择配置集。只有
full
和full-ha
配置集启用了messaging
子系统。 - 展开 Messaging 菜单,然后选择 Destinations。
- JMS 供应商列表将会出现。在 default 配置里只有一个供应商,就是
default
。点击 View 链接查看这个供应商的详细设置。 - 点击 Addressing Settings 标签页。点击 按钮添加新模式,或者选择已有模式并点击 按钮更新设置。
- 如果您在添加新的模式,Pattern 字段引用
address-setting
元素的match
参数。您也可以编辑e Dead Letter Address, Expiry Address, Redelivery Delay 和 Max Delivery Attempts。其他选项需要用管理 CLI 进行配置。