2016-04-13 13 views
0

Bahar Entegrasyonu 4.1.6 jms ileti akışı iki sıra, ana sıra ve istisna kuyruğu ile çalışıyorum. İletiyi ana sıradan oku, işlem başarılı olmazsa, istisna kuyruğuna mesaj gönder. Özel durum sırasından gelen iletileri okuyan ve ana sıraya geri koyan bir yoklamam var. Bu sürece koşullu ihtiyacım var, eğer mesaj istisna kuyruğundan ana sıraya taşınırsa, 3 kez daha sonra mesajı görmezden gelin. Bunu yapmak için, 'Retry_Count' mesaj başlığına mülk eklemeyi planlıyorum ve hata sırasından ana sırasına mesaj gönderirken veya mesajı atarken bunu kontrol et. 1. 'Retry_Count' özelliği iletide olup olmadığını nasıl kontrol edelim? 2. 'Retry_Count' özelliği iletide değilse, ilk sayımı ekleyin, 1 ve ana sırayı 3'e yönlendirin. 'Retry_Count' özelliği iletideyse, yeniden deneme sayısının az mı yoksa eşit mi yeniden deneneceğini kontrol edin. sayı, 4. 'Retry_Count' özellik değeri maks. sayımdan azsa, artım sayısı ve ana sıraya yönlendirilir. 5. 'Retry_Count' özellik değeri maksimum sayıya eşitse, sıraya atmak için yönlendirin.Yay Entegrasyonu 4.1.6 Özel başlık özelliği iletide olup olmadığını ve ekleyemediğini nasıl kontrol edersiniz

Not poller yapılandırması, özel durum sırasından gelen iletiyi okuyarak ve ana sıraya yönlendirerek çalışır.

cevap

0

Bazı okuma ve yapılandırma ile, karşılaştığım sorunu çözebildim. JMS iletisi yerine yeniden deneme özelliğini ayarlamak için sprint tümleştirme nesnesini kullandım. İşte yapılandırma

<si-jms:inbound-channel-adapter 
     channel="BackoutQueueChannel" connection-factory="queueConnectionFactory" 
     destination="RegistrationBackoutQueue"> 
     <si:poller cron="0 0/2 * * * *" 
      max-messages-per-poll="2"> 
      <si:advice-chain> 
       <ref bean="PollSkipAdvice"/> 
      </si:advice-chain> 
     </si:poller> 
    </si-jms:inbound-channel-adapter> 
    <si:chain id="processBackoutQueue" input-channel="BackoutQueueChannel" output-channel="RecipientChannel" > 
     <si:header-enricher> 
      <si:header name="Event_Retry_Count" expression="headers.get('Event_Retry_Count') == null ? 2 : headers.get('Event_Retry_Count')+1" overwrite="true"/> 
     </si:header-enricher> 
     <si:filter id="checkEventEligibleForRetry" expression="@RegistrationEventPoller.isEventEligibleForRetry(payload, headers.get('Event_Retry_Count'))" discard-channel="poisonChannel"/> 
    </si:chain> 
İlgili konular