2016-04-07 17 views
0

Ben küçük Deve güzergahları var Deve uçbirimindaki Ölü-Sırası'na süresi dolmuş mesaj göndermek için değil hangi böyle bir son kullanma süresi ile başka kuyruğuna sadece ileriye mesajları: ihtiyacımKurulum kuyruk politikası

@Override 
public void configure() throws Exception { 

    defaultOnException(); 

    // Route all messages generated by system A (in OUTBOUND_A) to system B (INBOUND_B) 
    // @formatter:off 
    from("activemq:queue:OUTBOUND_A") 
     // ASpecificProcessor transform the coming message to another one. 
     .processor(new ASpecificProcessor()) 
     .to("activemq:INBOUND_B?explicitQosEnabled=true&timeToLive={{b.inbound.message.ttl}}"); 
    // @formatter:on 

} 

Kalıcı olmak için INBOUND_B'da gönderilen iletiler ve süresi dolan mesajın süresi dolduğunda, ActiveMQ.DLQ kuyruğuna gider.

ben

<policyEntry queue="INBOUND_B"> 
<!-- 
    Tell the dead letter strategy not to process expired messages 
    so that they will just be discarded instead of being sent to 
    the DLQ 
--> 
<deadLetterStrategy> 
    <sharedDeadLetterStrategy processExpired="false" /> 
</deadLetterStrategy> 
</policyEntry> 

ile conf/activemq.xml yılında ActiveMQ yapılandırmasını değiştirebilirler biliyorum Ama (yeniden başlatılması gerekiyor çünkü) Ben ActiveMQ yapılandırmasını değiştirmek için tercih ediyorum ve onu göndermek mümkün olup olmadığını merak ediyorum Deve uç nokta yapılandırması aracılığıyla bu tür bir politika? Hayır, ActiveMQ aracı taraf yapılandırması istemciden güncellenemez, bu da her türlü güvenlik sorununa yol açabilir.

+0

Belki de kirli bir çözüm olarak, DLQ'nuzdan tüketen küçük bir rotaya dönüşebilir ve sonra bunları kaydeder misiniz? –

+0

Pek değil, çünkü aynı türde bir mesaj (aynı gövde ve başlıklar), DLQ'da kalmasını gerçekten istediğim başka bir sıraya gönderilebilir. DLQ mesajından hangi kuyruğun süresinin dolduğunu göremiyorum. –

+0

Kirli çözümle devam ederken, mesajın nereden geldiğini görebilir ve yalnızca uygun gördüğünüz ürünleri tüketebilirsiniz. Buna JMS Seçici adı verilir: ("activemq: DLQ? Selector =" + java.net.URLEncoder.encode ("HEADER = 'VALUE'", "UTF-8")) - ("log: disard") ; –

cevap

1

Aracı yapılandırmasını güncelleştirmeniz ve aracınızda runtime configuration plugin numaralı telefonu kullanırsanız yeniden başlatmanız gerekmez.

+0

Bu eklentinin AMQ 5.9'dan beri var olduğunu bilmek güzel. Bu eklenti bir master/slave konfigürasyonunda iyi çalışıyor mu? Bir deneyeyim. –