2013-04-06 12 views
6

Sto tentando di impostare la scadenza del messaggio all'interno di un percorso Cammello XML Blueprint. Il valore che desidero impostare come scadenza viene mantenuto all'interno del corpo del messaggio (a protobuf).JMSExpiration vs TimeToLive

Ecco il mio codice: -

<setHeader headerName="AMQ_SCHEDULED_DELAY"> 
    <method bean="NotificationScheduler" method="postponeSending" /> 
</setHeader> 
<setHeader headerName="JMSExpiration"> 
    <method bean="NotificationScheduler" method="getExpiry" /> 
</setHeader> 
<setHeader headerName="ExpirationTest"> 
    <method bean="NotificationScheduler" method="getExpiry" /> 
</setHeader> 
<to uri="activemq:notifications.splitter" /> 

Come si può vedere dalla schermata qui sotto, sto impostando con successo due delle tre intestazioni, ma l'impostazione per "JMSExpiration" (come da this thread) ha avuto nessun effetto.

ActiveMQWeb snippet

So che avrei potuto in alternativa utilizzare il modello Elenco destinatari per impostare dinamicamente l'uri - cioè tirare fuori la scadenza dei dati del messaggio e aggiungere l'opzione ?timeToLive=.... Tuttavia, questo mi sembra un po 'goffo.

C'è un modo per impostare la scadenza tramite setHeader all'interno dell'XML?

Grazie,

J.

risposta

3

Modificare le uri a: activemq:notifications.splitter?preserveMessageQos=true e si dovrebbe andare bene.

Alcune intestazioni JMS possono essere "manualmente" cancellate come si sta provando utilizzando questa opzione.

Si prega di notare che si potrebbe voler prendere qualche precauzione, dal momento che se si sta ascoltando su un endpoint JMS, i messaggi in arrivo avranno le intestazioni JMS popolate, e quando si invia il messaggio in "a", il messaggio sarà mantenere JMSDeliveryMode, JMSExpiration e JMSPriority. Questo potrebbe o potrebbe non essere quello che vuoi.

+0

Mille grazie - Sto già rimuovendo l'intestazione AMQ_SCHEDULED_DELAY in un percorso successivo (altrimenti ogni instradamento ha il ritardo incorporato) così farà lo stesso se devo sopprimere la richiesta. –