16장. 파일 언어

초록

파일 언어는 단순한 언어의 확장이며, 그 자체로 독립적인 언어가 아닙니다. 그러나 파일 언어 확장은 파일 또는 FTP 끝점과 함께만 사용할 수 있습니다.

16.1. 파일 언어를 사용해야 하는 경우

16.1.1. 개요

파일 언어는 항상 사용할 수 있는 간단한 언어의 확장입니다. 다음과 같은 상황에서 사용할 수 있습니다.

참고

이스케이프 문자 \ 는 파일 언어로 사용할 수 없습니다.

16.1.2. 파일 또는 FTP 소비자 끝점에서

File 또는 FTP 소비자 끝점에 설정할 수 있는 여러 URI 옵션이 있으며, 이는 파일 언어 표현식을 값으로 사용합니다. 예를 들어 File consumer endpoint URI에서 fileName,move,pre Cryostat ,moveFailed, sortBy 옵션을 설정할 수 있습니다.

파일 소비자 끝점에서 fileName 옵션은 필터 역할을 하며 시작 디렉터리에서 실제로 읽을 파일을 결정합니다. 일반 텍스트 문자열이 지정된 경우(예: fileName=report.txt) 파일 소비자는 업데이트할 때마다 동일한 파일을 읽습니다. 그러나 간단한 표현식을 지정하면 이 옵션을 더 동적으로 만들 수 있습니다. 예를 들어 다음과 같이 파일 소비자가 시작 디렉터리를 폴링할 때마다 카운터 8080을 사용하여 다른 파일을 선택할 수 있습니다.

file://target/filelanguage/bean/?fileName=${bean:counter.next}.txt&delete=true

여기서 ${bean:counter.next} 표현식은 ID, 카운터 아래에 등록된 metrics에서 next() 메서드를 호출합니다.

move 옵션은 File consumer endpoint에서 읽은 후 백업 위치로 파일을 이동하는 데 사용됩니다. 예를 들어 다음 끝점은 파일을 처리한 후 백업 디렉터리로 이동합니다.

file://target/filelanguage/?move=backup/${date:now:yyyyMMdd}/${file:name.noext}.bak&recursive=false

여기서 ${file:name.noext}.bak 표현식은 원래 파일 이름을 수정하여 파일 확장자를 .bak 로 바꿉니다.

sortBy 옵션을 사용하여 파일을 처리해야 하는 순서를 지정할 수 있습니다. 예를 들어 파일 이름의 알파벳 순서에 따라 파일을 처리하려면 다음 파일 소비자 끝점을 사용할 수 있습니다.

file://target/filelanguage/?sortBy=file:name

마지막으로 수정된 순서에 따라 파일을 처리하려면 다음 파일 소비자 끝점을 사용할 수 있습니다.

file://target/filelanguage/?sortBy=file:modified

다음과 같이 reverse: prefix Cryostat- Cryostat를 추가하여 순서를 취소할 수 있습니다.

file://target/filelanguage/?sortBy=reverse:file:modified

16.1.3. 파일 또는 FTP 소비자가 만든 교환 시

File 또는 FTP 소비자 끝점에서 교환이 시작되면 경로 전체의 교환에 파일 언어 표현식을 적용할 수 있습니다(원래 메시지 헤더가 삭제되지 않는 한). 예를 들어 다음과 같이 파일 확장자에 따라 메시지를 라우팅하는 콘텐츠 기반 라우터를 정의할 수 있습니다.

<from uri="file://input/orders"/>
<choice>
  <when>
    <simple>${file:ext} == 'txt'</simple>
    <to uri="bean:orderService?method=handleTextFiles"/>
  </when>
  <when>
    <simple>${file:ext} == 'xml'</simple>
    <to uri="bean:orderService?method=handleXmlFiles"/>
  </when>
  <otherwise>
    <to uri="bean:orderService?method=handleOtherFiles"/>
  </otherwise>
</choice>