10.8. 검증
10.8.1. 개요
validate 패턴은 메시지의 콘텐츠가 유효한지 여부를 확인하는 편리한 구문을 제공합니다. validate DSL 명령은 서술자 표현식을 유일한 인수로 사용합니다. 서술자가 true 로 평가되면 경로가 정상적으로 처리됩니다. 서술자가 false 로 평가되면 PredicateValidationException 이 발생합니다.
10.8.2. Java DSL 예
다음 경로는 정규식을 사용하여 현재 메시지의 본문을 검증합니다.
from("jms:queue:incoming")
.validate(body(String.class).regex("^\\w{10}\\,\\d{2}\\,\\w{24}$"))
.to("bean:MyServiceBean.processLine");다음과 같이 메시지 header Cryostat- Cryostat의 유효성을 검증할 수도 있습니다.
from("jms:queue:incoming")
.validate(header("bar").isGreaterThan(100))
.to("bean:MyServiceBean.processLine");간단한 표현식 언어로 validate를 사용할 수 있습니다.
from("jms:queue:incoming")
.validate(simple("${in.header.bar} == 100"))
.to("bean:MyServiceBean.processLine");10.8.3. XML DSL 예
XML DSL에서 유효성을 검사하기 위해 권장되는 접근 방식은 간단한 표현식 언어를 사용하는 것입니다.
<route>
<from uri="jms:queue:incoming"/>
<validate>
<simple>${body} regex ^\\w{10}\\,\\d{2}\\,\\w{24}$</simple>
</validate>
<beanRef ref="myServiceBean" method="processLine"/>
</route>
<bean id="myServiceBean" class="com.mycompany.MyServiceBean"/>다음과 같이 메시지 header Cryostat- Cryostat의 유효성을 검증할 수도 있습니다.
<route>
<from uri="jms:queue:incoming"/>
<validate>
<simple>${in.header.bar} == 100</simple>
</validate>
<beanRef ref="myServiceBean" method="processLine"/>
</route>
<bean id="myServiceBean" class="com.mycompany.MyServiceBean"/>