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>