配置几个JMS队列相同的死信队列中的JBoss 7.1(Configuring the same d

2019-10-21 12:07发布

我在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 。 如果我把*#中的人物之间,服务器抛出启动过程中的异常。

Answer 1:

据了解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当你把一个值与字符cofiguration解析器抛出一个异常*

该错误是类似于:

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>

该wilcard #只能是在比赛的最终用途。



文章来源: Configuring the same dead letter queue for several JMS queues in JBoss 7.1