我有以下路线:
<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
由于“myFilterStrategy”,我预计 CamelHttpQuery 将无法到达“a.nice.url”端点。然而确实如此。这怎么可能?
为了模拟“a.nice.url”,我加载了另一个 Camel 上下文,其中包含使用码头端点的路线。我在那里打印了 In header ,并且看到 CamelHttpQuery 就在那里。
最佳答案
Camel HeaderFilterStrategy用于将协议(protocol)头映射到camel消息或者从camel消息映射到协议(protocol)头时对消息头进行过滤。
对于camel-http组件,camel消息头可以映射为http头,但是由于camel-http使用CamelHttpQuery构建请求url,您仍然可以从http请求中获取Query参数。
关于filter - Camel HeaderFilterStrategy CamelHttpQuery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24781603/