104.5. Spring PropertyPlaceholderConfigurer 및 File 구성 요소 사용
Camel에서는 다음과 같이 파일 확장자를 기반으로 라우팅할 수 있는 Spring XML에서 콘텐츠 기반 라우터를 보다 쉽게 수행할 수 있는 간단 한 언어에서 파일 언어를 직접 사용할 수 있습니다.
<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>
파일 끝점에서 fileName
옵션을 사용하여 파일 언어를 사용하여 동적 파일 이름을 설정한 경우,
에서 대체 구문( Camel 2.5 onwards에서 사용 가능)을 사용하여 Springs PropertyPlaceholderConfigurer
와 충돌하지 않도록 하십시오.
bundle-context.xml
<bean id="propertyPlaceholder" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="location" value="classpath:bundle-context.cfg" /> </bean> <bean id="sampleRoute" class="SampleRoute"> <property name="fromEndpoint" value="${fromEndpoint}" /> <property name="toEndpoint" value="${toEndpoint}" /> </bean>
bundle-context.cfg
fromEndpoint=activemq:queue:test toEndpoint=file://fileRoute/out?fileName=test-$simple{date:now:yyyyMMdd}.txt
위의 toEndpoint
에서 $simple\{ } 구문을 사용하는 방법을 확인하십시오.
이렇게 하지 않으면 clash가 있고 Spring은 다음과 같은 예외를 throw합니다.
org.springframework.beans.factory.BeanDefinitionStoreException: Invalid bean definition with name 'sampleRoute' defined in class path resource [bundle-context.xml]: Could not resolve placeholder 'date:now:yyyyMMdd'