1

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>

ここで、上記の 2 つのキューのデッド レター キューを構成したいと考えています。マッチにはどのような値を使用する必要がありますか?

#はすべての JMS キューに適用されるため使用できませんが、必要なのは 2 つだけです。

<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>

また、メッセージをデッドレターキューから元のキューにプッシュバックする方法はありますか?

hornet キュー バージョン 2.2.13 を使用しており、ワイルド カードを として使用したいと考えていますMX.EQ.*.*.OUT*文字の間にまたはを入れる#と、サーバーは起動中に例外をスローします。

4

1 に答える 1

2

HornetQ ワイルドカード構文の理解によると:

HornetQ ワイルドカード式には、文字 (ピリオド) で区切られた単語が含まれます'.'

特殊文字'#'および に'*'も特別な意味があり、単語の代わりをすることができます。
この文字'#'は、「0 個以上の単語の任意のシーケンスに一致する」ことを意味します。
文字'*'は「単一の単語に一致する」ことを意味します。

したがって、ワイルドカードは, , と'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 では、 character で値を入力すると設定パーサーが例外をスローします*

エラーは次のようになります。

JBAS015956: Caught exception during boot: org.jboss.as.controller.PathElement$OperationClientIllegalArgumentException: JBAS014719: Invalid value specification

値にスペースを使用すると、同じ問題が発生します。この問題については、 ロガー カテゴリにスペースを含めることはできません

1 つのオプションは、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>

ワイルドカード#は試合終了時にのみ使用できます。

于 2014-12-30T23:16:14.423 に答える