我已经被headerfilterstrategy定义为
@Configuration
public class HeaderFilterConfiguration extends DefaultHeaderFilterStrategy {
@Bean("exchangeObjectFilter")
public void removeExchangeObject() {
setFilterOnMatch(false);
Set<String> filters = getOutFilter();
filters.add("orchestrationExchange");
setOutFilter(filters);
}
}
我使用这个过滤策略使用这个代码
from("direct:mock")
.streamCaching()
.routeId("orchestration-token")
.routeDescription("Invokes GET token details to call external endpoints")
.setHeader(Exchange.HTTP_METHOD, constant(HttpMethods.POST))
.setHeader(Exchange.CONTENT_TYPE, constant(ContentType.APPLICATION_FORM_URLENCODED.getMimeType()))
.setBody(header(REQUEST_BODY))
.toD("http://my-okta-route.com?headerFilterStrategy=#exchangeObjectFilter")
.unmarshal().json(JsonLibrary.Jackson, TokenResponse.class)
.log(LoggingLevel.DEBUG, "Successfully processed token. Token response::${body}");
但是当我打印exchange对象时,它仍然包含没有任何过滤的所有头。我已经检查了所有的camel资源,但是找不到如何在dsl中应用defaultheaderfilters策略。
1条答案
按热度按时间z2acfund1#
headerfilterstrategy“从通信中删除头,而不从交换中删除它们”。请查看此常见问题作为参考。
当我需要从exchange中删除标头时,我使用remove header或remove headers eip。
示例1:使用通配符删除所有jms头
示例2:使用通配符删除所有jms头