我有一个在 JBoss 7.1 上运行的 Java 应用程序。它使用了 20 多个 JMS 队列。
我设置 JMS 队列的配置:
<jms-queue name="MX.EQ.DT.MT.OUT">
<entry name="queue/MX.EQ.DT.MT.OUT"/>
<entry name="java:jboss/exported/jms/queue/MX.EQ.DT.MT.OUT"/>
</jms-queue>
<jms-queue name="MX.EQ.DS.XML.OUT">
<entry name="queue/MX.EQ.DS.XML.OUT"/>
<entry name="java:jboss/exported/jms/queue/MX.EQ.DS.XML.OUT"/>
</jms-queue>
现在,我想为上述两个队列配置死信队列。我必须为匹配使用什么值?
我不能使用#
,因为它适用于所有JMS队列,但我只想要这两个。
<address-setting match="jms.queue.MX.EQ.*.*.OUT">
<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>
还有没有办法将消息从死信队列推回原始队列?
我正在使用大黄蜂队列版本 2.2.13,并希望使用通配符作为MX.EQ.*.*.OUT
.如果我在字符之间放置*
或#
,服务器会在启动过程中抛出异常。
根据了解HornetQ通配符语法:
HornetQ通配符表达式包含由 字符
'.'
(句号)。特殊字符
'#'
和'*'
也具有特殊含义和 可以代替一个词。
字符'#'
表示"匹配零个或多个单词的任何序列"。
字符'*'
的意思是"匹配一个单词"。所以通配符
'news.europe.#'
会匹配'news.europe'
,'news.europe.sport'
、'news.europe.politics'
和'news.europe.politics.regional'
但不匹配'news.usa'
,'news.usa.sport'
也不是'entertainment'
.通配符
'news.*'
将匹配'news.europe'
,但不能'news.europe.sport'
.
通配符'news.*.sport'
将匹配'news.europe.sport'
和 也'news.usa.sport'
,但不是'news.europe.politics'
.
在您的配置中,您可以使用 wilcard *
,但在 JBoss 7.1.1 中,当您输入带有字符*
的值时,配置解析器会抛出异常。
该错误类似于:
JBAS015956: Caught exception during boot: org.jboss.as.controller.PathElement$OperationClientIllegalArgumentException: JBAS014719: Invalid value specification
当您在值中使用空格时,会出现同样的问题,此问题在以下文件中描述:记录器类别不能有空格
现在一个选项是更新到 JBoss 7.1.2 或更高版本,或者为队列名称创建不同的命名法,例如:
<jms-queue name="group1.q1">
<entry name="queue/group1.q1"/>
<entry name="java:jboss/exported/jms/queue/group1.q1"/>
</jms-queue>
<jms-queue name="group1.q2">
<entry name="queue/group1.q2"/>
<entry name="java:jboss/exported/jms/queue/group1.q2"/>
</jms-queue>
和address-setting
:
<address-setting match="group1.#">
<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>
威尔卡#
只能在比赛结束时使用。