2014-07-16 3 views
1

나는 다음과 같은 경로가 있습니다낙타 HeaderFilterStrategy CamelHttpQuery

<route id="my-route"> 
    <from uri={{some.queue}}"/> 
    <to uri="bean:beanProcessor?method=processMethod"/> 
    <to uri="{{a.nice.url}}?headerFilterStrategy=#myFilterStrategy"/> 
</route> 

이 headerFilterStrategy :

<bean id="myFilterStrategy" class="org.apache.camel.impl.DefaultHeaderFilterStrategy"> 
    <property name="outFilter"> 
     <set> 
      <value>camelhttpquery</value> 
     </set> 
    </property> 
    <property name="lowerCase" value="true" /> 
</bean> 

CamelHttpQuery이

CamelHttpQuery=first=465546&second=312863&third=0 

내가 때문에 기대로 설정되어 프로세서 내부를 CamelHttpQuery가 "a.nice.url"엔드 포인트에 도달하지 않을 "myFilterStrategy" 그러나 그것은 그렇다. 이것이 어떻게 가능한지?

"a.nice.url"을 조롱하려면 부두 종점을 사용하는 다른 낙타 환경을로드했습니다. In 헤더를 인쇄하면 CamelHttpQuery가 있음을 알 수 있습니다.

+0

CamelHttpQuery의 헤더를 필터링하려면 기본 HttpHeaderFilterStrategy가 필요합니다. "Camel"로 시작하는 메시지 헤더를 필터링합니다. –

+0

필자는 왜 구현에서 CamelHttpQuery를 필터링하지 않는지 이해하고 싶습니다. 나는 또한 어떻게 든 메시지에 넣어지는 실제 쿼리 매개 변수를 필터링하지 않는다는 것을 알게되었습니다. CamelHttpQuery 헤더가 동일한 경로에있는 BeanProcessor 내부에서 작성 되었기 때문입니까? – ampofila

답변

2

Camel HeaderFilterStrategy는 프로토콜 헤더에서 낙타 메시지로, 또는 낙타 메시지에서 프로토콜 헤더로 매핑 할 때 메시지 헤더를 필터링하는 데 사용됩니다.

camel-http 구성 요소의 경우 camel 메시지 헤더를 http 헤더로 매핑 할 수 있지만 camel-http가 CamelHttpQuery를 사용하여 요청 URL을 작성하므로 http 요청에서 Query 매개 변수를 얻을 수 있습니다 .

+0

기본적으로 camel-http 구성 요소는 CamelHttpQuery를 사용하여 필터링 전에 http 쿼리를 작성하고 다른 끝에 Camel은 들어오는 http 쿼리를 다시 CamelHttpQuery로 변환한다고 말합니다. 실제 검색어 매개 변수에도 동일하게 적용됩니다. – ampofila