2016-03-30 16 views
1

Yoklama dinamikdinamik gecikme yapılandırma

Ben s3.The sabit gecikme dosyaları yoklamak için entegrasyondan Anketlerimizi bileşenini kullanıyorum

15 dk ve maksimum mesaj oranı, bu aşağı akışında oldu ı did 1 hayranlarıyla nedenidir olduğunu xd iletileri http.Now 100k kayıtları dosya için bu yana kullanıyorum çünkü tıkanma vardı ama dosya boyutu küçük olduğunda ben hala hızlı işlemek olsa 15 dakika bekleyin.Şimdi dosya boyutunu bağlı olarak gecikme dinamik olarak ayarlamak için herhangi bir yolu var .Ayrıca hangi dosyaların ne olacağını bilmediğimizden emin de değiliz? Dosya boyutuna bağlı olarak, kayıt veya toplama sayısı değişecek mi? Sabit gecikme veya sabit oran dinamik olarak değişebilir mi? Yay Entegrasyon ile başlayarak

<int:poller fixed-delay="${fixedDelay}" default="true" max-messages-per-poll="${maxMessageRate}"> 
     <int:advice-chain> 
      <ref bean="pollAdvise"/> 

     </int:advice-chain> 
    </int:poller> 


<bean id="pollAdvise" class="org.springframework.integration.scheduling.PollSkipAdvice"> 
    <constructor-arg ref="healthCheckStrategy"/> 

</bean> 

<bean id="healthCheckStrategy" class="test.ServiceHealthCheckPollSkipStrategy"> 
    <property name="url" value="${url}"/> 
    <property name="doHealthCheck" value="${doHealthCheck}"/> 
</bean> 



<bean id="credentials" class="org.springframework.integration.aws.core.BasicAWSCredentials"> 
    <property name="accessKey" value="${accessKey}"/> 
    <property name="secretKey" value="${secretKey}"/> 
</bean> 



<bean id="clientConfiguration" class="com.amazonaws.ClientConfiguration"> 
    <property name="proxyHost" value="${proxyHost}"/> 
    <property name="proxyPort" value="${proxyPort}"/> 
    <property name="preemptiveBasicProxyAuth" value="false"/> 
</bean> 


<bean id="s3Operations" class="org.springframework.integration.aws.s3.core.CustomC1AmazonS3Operations"> 
    <constructor-arg index="0" ref="credentials"/> 
    <constructor-arg index="1" ref="clientConfiguration"/> 
    <property name="awsEndpoint" value="s3.amazonaws.com"/> 
    <property name="temporaryDirectory" value="${temporaryDirectory}"/> 
    <property name="awsSecurityKey" value="${awsSecurityKey}"/> 
</bean> 



<!-- aws-endpoint="https://s3.amazonaws.com" --> 
<int-aws:s3-inbound-channel-adapter aws-endpoint="s3.amazonaws.com" 
            bucket="${bucket}" 
            s3-operations="s3Operations" 
            credentials-ref="credentials" 
            file-name-wildcard="${fileNameWildcard}" 
            remote-directory="${remoteDirectory}" 
            channel="splitChannel" 
            local-directory="${localDirectory}" 
            accept-sub-folders="false" 
            delete-source-files="true" 
            archive-bucket="${archiveBucket}" 
            archive-directory="${archiveDirectory}"> 
</int-aws:s3-inbound-channel-adapter> 

<int-file:splitter id="s3splitter" input-channel="splitChannel" output-channel="bridge" markers="false" charset="UTF-8"> 

    <int-file:request-handler-advice-chain> 
     <bean class="org.springframework.integration.handler.advice.ExpressionEvaluatingRequestHandlerAdvice"> 
      <property name="onSuccessExpression" value="payload.delete()"/> 
     </bean> 
    </int-file:request-handler-advice-chain> 

</int-file:splitter> 

cevap

1

4,2 AbstractMessageSourceAdviceintroduced olmuştur: Bu yöntem, alma() yöntemi sonra adlandırılır

; Yine, kaynağı yeniden yapılandırabilir veya sonuca bağlı olarak herhangi bir eylemi gerçekleştirebilirsiniz (kaynak tarafından oluşturulmuş hiçbir mesaj yoksa null olabilir). Farklı bir mesaj bile gönderebilirsin!

sürümü 4.3 ile başlayarak biz CompoundTriggerAdvice tanıtmak: http://docs.spring.io/spring-integration/docs/4.3.0.BUILD-SNAPSHOT/reference/html/messaging-channels-section.html#_compoundtriggeradvice

Eğer payload boyutuna dayalı bir kullanım örneği için kullanabilirsiniz hangi.

+0

10.File 100 mb b.file 1 mb ve c.file 10 mb 3 dosya olduğunu varsayalım. Polisin rasgele çekeceğini düşünüyorum? Ben bir 10 dakika b 1 dak ve dosya 10 dk dosya sabit gecikme istiyorum c 5 dak – constantlearner

+0

Mmm. Fark etmez. Mevcut mesajdaki bir sonraki anket süresini değiştirmek istersiniz. 'AbstractMessageSourceAdvice.afterReceive()' işlevinde yapabileceğiniz her şey, 'DynamicPeriodicTrigger' işlevini dosya boyutuna bağlı olarak 'periyodunu' değiştirmek için kullanır. –

+0

Teşekkürler bunu deneyecek – constantlearner