首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为JBoss 7.1中的多个JMS队列配置相同的死信队列

为JBoss 7.1中的多个JMS队列配置相同的死信队列
EN

Stack Overflow用户
提问于 2014-12-29 16:35:13
回答 1查看 1.2K关注 0票数 1

我在JBoss 7.1上运行了一个java应用程序。它使用超过20个JMS队列。

设置JMS队列的配置:

代码语言:javascript
复制
<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队列,但我只想要这两个。

代码语言:javascript
复制
<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的通配符。如果在字符之间放置*#,服务器将在引导期间抛出异常。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-30 23:16:14

根据理解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中,当您使用字符*值时,配置解析器会抛出一个异常。

该错误类似于:

代码语言:javascript
复制
JBAS015956: Caught exception during boot: org.jboss.as.controller.PathElement$OperationClientIllegalArgumentException: JBAS014719: Invalid value specification

当您在值中使用空格时,也会出现同样的问题,这个问题将在:记录器类别不能有空格中描述。

现在,一个选项是更新到JBoss 7.1.2或更高版本,或者为队列的名称创建一个不同的名称,例如:

代码语言:javascript
复制
<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

代码语言:javascript
复制
<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 #只能在比赛结束时使用。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27692567

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档