2013-04-06 3 views
6

Ich versuche, Nachricht Ablauf in einem Blueprint XML Camel Route festlegen. Der Wert, den ich als Verfallsdatum festlegen möchte, wird im Nachrichtentext gespeichert (a protobuf).JMSExpiration vs TimeToLive

Hier ist mein Code: -

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

Wie Sie aus dem Screenshot unten sehen können, bin ich erfolgreich zwei der drei Header Einstellung, sondern die Einstellung für „JMSExpiration“ (gemäß this thread) hatte Kein Effekt.

ActiveMQWeb snippet

Ich weiß, ich alternativ die Empfängerliste Muster der uri nutzen könnten, um dynamisch festgelegt - das heißt ziehen den Ablauf aus der Nachrichtendaten und hängen Sie die ?timeToLive=... Option. Das scheint mir jedoch ein wenig klobig zu sein.

Gibt es eine Möglichkeit, Ablaufdatum über SetHeader innerhalb der XML festzulegen?

Danke,

J.

Antwort

3

Ihre uri ändern: activemq:notifications.splitter?preserveMessageQos=true und Sie sollten in Ordnung sein.

Einige JMS-Header können "manuell" überschrieben werden, wie Sie es mit dieser Option versuchen.

Bitte beachten Sie, dass Sie einige Warnzentrale nehmen möchten, denn wenn Sie auf einem JMS Endpunkt hören, werden die ankommenden Nachrichten JMS-Header bevölkert haben, und wenn Sie die Botschaft in Ihrem „auf“ senden, wird die Nachricht behalten JMSDeliveryMode, JMSExpiration und JMSPriority. Dies könnte oder könnte nicht das sein, was Sie wollen.

+0

Vielen Dank - Ich entferne bereits den Header AMQ_SCHEDULED_DELAY in einer nachfolgenden Route (sonst wird jede Route die Verzögerung eingebaut), so wird das gleiche tun, wenn ich exppryy unterdrücken muss. –

Verwandte Themen