Apache Camel의 파일 구성 요소를 사용하여 이상한 장애물이 있습니다. 문제의 요지는 다음과 같습니다. 파일 구성 요소를 사용하여 디렉토리의 모든 메시지를로드합니다. 그런 다음 프로세서를 사용하여로드 된 파일에 대해 일부 작업을 수행합니다. 프로세스가 성공하면 파일을 다른 위치로 이동하고 원본 파일을 삭제합니다. 그러나 프로세스가 실패하면 원본 디렉토리에 메시지를 남깁니다. 코드는 다음과 같습니다.Apache Camel : 처리 후 원래 위치에 메시지를 다시 넣으십시오.
from("fileLocation")
.process(new MessageProcessor())
.choice()
.when(header("processPassed").isEqualTo(true))
.to("file:newLocation")
.otherwise()
.to("fileLocation");
프로세서가 통과하면 모든 것이 효과적입니다. 그러나 프로세서가 실패하고 메시지를 원래 위치로 되돌려 놓으려고하면 작동하지 않습니다. 이 문제를 해결하는 방법에 대한 아이디어가 있습니까?
무한 루프 = 매우 나쁨! – vikingsteve
파일을 오류 폴더로 이동하지만 원래 위치로 남겨 두는 것에 동의합니다. – David
그런 다음 [Idempotent Consumer] (http://camel.apache.org/idempotent-consumer.html)를 만들어야합니다. 파일 끝점에서 onop 옵션과 같이 noop = true를 지정하면이 작업을 수행 할 수 있지만 응용 프로그램이 다시 시작되지 않는 한 1000 개 항목에 대해서만 작동합니다. 해답은 영구적 인 멱등 원 솔루션의 예제로 업데이트됩니다. –