2012-10-24 3 views
0

파일 : route camel 구성 요소가 있는데, 완료 조건 집합과 함께 aggregationStrategy를 중지 조건으로 사용합니다.completionFromBatchConsumer() 및 readlock = changed가 낙타 파일/ftp에서 함께 작동합니다.

내 애그리 게이터 (aggregator)는 CompletionAwareAggregationStrategy

자체가 잘 작동 경로를 구현합니다.

저는 현재 readLock = changed 전략을 정의하여 다른 프로세스에서 쓰고있는 파일을 건너 뛰고 있습니다. 제대로 작동하지 않습니다.

문제는 readLock으로 인해 파일이 건너 뛸 때 배치 크기가 업데이트되지 않아 집계 자의 onCompletion 메서드가 호출되어 절대로 죽은 경로가되는 것입니다.

배치의 크기를 계산하기 전에 readLock을 낙타로 검사해서는 안됩니까? 이 솔루션이나 이와 동등한 솔루션을 얻을 수있는 방법이 있습니까?

TKS

답변

1

아주의 사항에주의해야합니다. 읽기 잠금은 열심히하지 않고 즉시 적용됩니다. 따라서 배치 소비자는 10 개의 파일을 볼 수 있지만 읽기 잠금은 현재 9 개의 파일에만 적용 할 수 있습니다. 그리고 읽기 잠금 시간 초과가 있으면 파일을 건너 뜁니다. 시간 초과가 없다면 결국 읽기 잠금이 부여되고 모든 10 개의 파일을 처리 할 수 ​​있습니다.

완료 세부 정보가 업데이트 될 수 있기 때문에 쉽게 수행 할 수있는 작업이 있는지 확실하지 않지만 마지막 파일은 읽기 잠금 문제 일 수 있습니다. 그러면 방아쇠를 당하지 않을 것입니다.

읽기 잠금에 빈 교환을 허용하지 않는 기능을 추가 할 수 있습니다. 그런 다음이를 알고 있어야하며 맞춤 집계 전략에서이를 처리해야합니다.

+0

멋진 기능을 제공하는 Claus입니다. 답변 해주셔서 감사합니다. 지금은 읽기 전용 잠금 기반 필터를 구현했습니다. 필자가 필요로하는 바로는이를 달성하는 것입니다. –

관련 문제