Apache Camel - File component (3)

Filter

  • 특정 파일만 추출 or skip 하고 싶을 때 사용
  • org.apache.camel.component.file.GenericFilter class를 implement하여 사용
    public class [method 이름] implements GenericFileter{
    
      public boolean accept(GenericFile pathname){
       
     		// accpet()에서 false를 return 한다면, 그 file은 skip
     		// Sample Code : file 이름이 test로 시작한다면 skip
     		return !pathname.getFileName().startsWith("test");
      }
    }
    
  • route에서 bean을 사용할 때는 # annotation 사용한다.

org.apache.camel.component.file.GenericFile

  • interface
  • method (accept(GenericFile file))을 override하여 사용
  • option
    • changeFileName(String newname) : newname으로 file 이름 변경
    • getFileLength : file 크기를 String으로 return
    • getFileName : file 이름을 String으로 return

<setHeader> in Camel HTTP

  • file component 간의 전송에서는 fileName이 그대로 유지되지만, HTTP 전송을 이용한다면 file name이 그대로 유지 X
  • <setHeader> 이용하여 file 이름 value를 같이 전송
1. route.xml [Client(Sender) 시점]
  • <setHeader> headerName option 이용하여 file Component의 file 이름을 header에 저장
  • <setHeader><simple>, <constant> 모두 사용할 수 있다. ```xml
${in.header.CamelFileName}

```

2. route.xml [Server(Receiver) 시점]
  • File Component의 fileName option을 이용해 file 이름 지정

참고 자료