2012-07-22 48 views
4

我正在使用Jboss 7.1.1.final,我想定义2个不同的DLQ,一个用于某个队列,另一个用于其他所有队列。需要关于HornetQ <address-setting>的描述方法

我发现这个配置:

<address-settings> 
    <address-setting match="jms.queue.exampleQueue"> 
     <dead-letter-address>jms.queue.deadLetterQueue</dead-letter-address> 
     <max-delivery-attempts>3</max-delivery-attempts> 
     <redelivery-delay>5000</redelivery-delay> 
     <expiry-address>jms.queue.expiryQueue</expiry-address> 
     <last-value-queue>true</last-value-queue>   
     <max-size-bytes>100000</max-size-bytes> 
     <page-size-bytes>20000</page-size-bytes> 
     <redistribution-delay>0</redistribution-delay> 
     <send-to-dla-on-no-route>true</send-to-dla-on-no-route> 
     <address-full-policy>PAGE</address-full-policy> 
    </address-setting> 
</address-settings> 

匹配属性可以用来匹配某个队列,我有几个关于这个配置的问题:

  1. 如果我定义2 address-setting,一个使用通配符匹配全部和一个只匹配一个队列的通配符,一个队列定义是否优先?我需要把它放在匹配所有定义之前还是无所谓?
  2. 在这个例子中,他们匹配队列jms.queue.exampleQueue,我有一个队列定义为:

    <jms-queue name="MissionResult"> 
        <entry name="queue/MissionResult"/> 
    </jms-queue> 
    

    我应该放什么match属性以匹配呢?

回答

5

找到了答案:

  1. 的2级的定义可以共存。 Jboss会找到最佳匹配。
  2. 您需要定义诸如队列:

    <jms-queue name="exampleQueue"> 
        <entry name="queue/exampleQueue" /> 
    </jms-queue> 
    

    ,然后匹配这个队列,使用jms.queue.exampleQueue

+0

我应该补充的一件事是'match'属性使用Camel案例来区分队列名称。因此,如果您的队列名称定义为name =“EmailQueue”,那么您的“匹配”值将是“jms.queue.emailQueue”,而不是“jms.queue.EmailQueue”。如果你使用最新版本,那么它会默默地被忽略,并使用默认的(通配符)。 – DhafirNz 2014-09-17 20:04:47

+0

您能否提供一份手册的参考资料,能否澄清“最佳匹配”? ('最佳匹配'是指最严格的?还是它会堆叠匹配? – gkephorus 2017-02-28 15:24:29