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"/>