2017-01-03 8 views
0

apache camel을 사용하여 ftp 채널에서받은 파일을 처리합니다. 내 응용 프로그램은 클러스터 (4 노드)에 배포됩니다.이 경우 RedisIdempotentRepository를 사용하여 단일 노드가 파일을 처리하도록합니다. 내 문제는 처리 후 파일을 삭제하고 싶은데, 노드가 파일을 처리하고 노드 B가 이미 필터를 통과하지 못했기 때문에 노드 B가 파일을 삭제할 때 처리 한 노드 delete=true을 사용하면 따라서 삭제에 직접 액세스합니다.클러스터에서 처리 된 파일 apache-camel 삭제

노드 A가 파일을 삭제하는 것을 허용하는 방법을 알고 싶습니다.

from("sftp://host:port/folder?delete=true) 
.idempotentConsumer(simple("${file:onlyname}"), 
    RedisIdempotentRepository.redisIdempotentRepository(redisTemplate, "camel-repo")) 
.bean("orderTrackingFileProcessor"); 
+0

"필터"란 무엇입니까? 노드 B가 필터를 통과하거나 통과하지 않는다는 것을 의미 할 때, 당신은 무엇을 의미합니까? –

+0

"필터"가 의미하는 바는 파일의 이름이 redis 데이터베이스에 존재하는지 노드 B가 확인한다는 것입니다. –

답변

0

구성 FTP 엔드 포인트는 나중에 경로에 직접 아닌 나무 등 소비자 EIP를 레디 스의 멱등 저장소를 사용합니다. 따라서 1 ftp 소비자 만 동일한 파일을 처리 할 수 ​​있습니다.

Camel in Action 2nd ed 책이있는 경우 거래 장의 두 번째 절반에 설명되어 있습니다.