103.25. ANT 경로 일치자를 사용하여 필터링
ANT 경로 matcher는 comel -springECDHE에 즉시 제공됩니다. 따라서 Maven을 사용하는 경우 camel-spring 을 사용해야 합니다.
그 이유는 Spring의 BOOM PathMatcher 를 활용하여 실제 일치를 수행하기 때문입니다.
파일 경로는 다음 규칙과 일치합니다.
-
?한 문자 일치 -
*0개 이상의 문자 일치 -
**경로에서 0개 이상의 디렉토리와 일치
Camel 2.10 이후의 새로운 옵션은 이제 antInclude 및 antExclude 옵션이 있으므로 필터를 정의하지 않고도 ANT 스타일 include/exclude를 쉽게 지정할 수 있습니다. 자세한 내용은 위의 URI 옵션을 참조하십시오.
아래 샘플에서는 이를 사용하는 방법을 보여줍니다.
103.25.1. Comparator를 사용하여 정렬 링크 복사링크가 클립보드에 복사되었습니다!
Camel은 플러그형 정렬 전략을 지원합니다. 이 전략은 Java의 java.util.Comparator 에서 빌드를 사용하는 것입니다. 그런 다음 이러한 비교자를 사용하여 끝점을 구성하고 처리되기 전에 Camel이 파일을 정렬하도록 할 수 있습니다.
샘플에서 파일 이름으로 정렬하는 자체 비교기를 빌드했습니다.
그리고 Spring XML 파일에 정의된 분류기(mySorter)를 참조하도록 sorter 옵션을 사용하여 경로를 구성할 수 있습니다.
<!-- define our sorter as a plain spring bean -->
<bean id="mySorter" class="com.mycompany.MyFileSorter"/>
<route>
<from uri="file://inbox?sorter=#mySorter"/>
<to uri="bean:processInbox"/>
</route>
URI 옵션은 # syntax in the Spring DSL 경로에서 # syntax #을 참조할 수 있습니다. 위의 Spring DSL 경로에서는 #.을 접두사로 추가하여 레지스트리에서 DestinationRules를 참조할 수 있습니다. 따라서 sorter=#mySorter 를 작성하면 Camel에 ID가 mySorter 인 DestinationRule이 있는 Registry에서 확인하도록 지시합니다.
103.25.2. sortBy를 사용하여 정렬 링크 복사링크가 클립보드에 복사되었습니다!
Camel은 플러그형 정렬 전략을 지원합니다. 이 전략은 File Language 를 사용하여 정렬을 구성하는 것입니다. sortBy 옵션은 다음과 같이 구성됩니다.
sortBy=group 1;group 2;group 3;...
각 그룹이 colon로 구분되는 경우 간단한 상황에서는 하나의 그룹을 사용하므로 간단한 예는 다음과 같습니다.
sortBy=file:name
이렇게 하면 파일 이름으로 정렬됩니다. 역 접두사를 붙여서 순서를 변경할 수 있습니다. 즉, 해당 그룹에 대한 정렬은 이제 Z..A입니다.
sortBy=reverse:file:name
파일 언어 의 전체 전원을 가지고 있으므로 다른 매개 변수 중 일부를 사용할 수 있으므로 파일 크기로 정렬하려면 다음을 수행합니다.
sortBy=file:length
문자열 비교에 ignoreCase: 를 사용하여 대/소문자를 무시하도록 구성할 수 있으므로 파일 이름 정렬을 사용하지만 대/소문자를 무시하려면 다음을 수행합니다.
sortBy=ignoreCase:file:name
무시 케이스와 역방향을 결합할 수 있지만 먼저 역방향을 지정해야 합니다.
sortBy=reverse:ignoreCase:file:name
아래 샘플에서 마지막으로 수정한 파일로 정렬하려면 다음을 수행합니다.
sortBy=file:modified
그런 다음 동일한 수정 사항이 있는 파일을 이름으로 정렬할 수 있도록 2nd 옵션으로 그룹화합니다.
sortBy=file:modified;file:name
이제 여기에 문제가 있습니다. 찾을 수 있습니까? 파일의 수정된 타임 스탬프는 밀리초 단위로 너무 좋지만, 날짜별로 정렬하려는 경우 이름별로만 정렬하려면 어떻게 해야 합니까?
파일 언어 의 실제 기능을 사용할 수 있을 뿐만 아니라 패턴을 지원하는 date 명령을 사용할 수 있습니다. 따라서 이 문제는 다음과 같이 해결될 수 있습니다.
sortBy=date:file:yyyyMMdd;file:name
이것은 매우 강력합니다. 그룹당 리버스를 사용할 수 있는 방식으로, 파일 이름을 반전할 수 있습니다.
sortBy=date:file:yyyyMMdd;reverse:file:name