首页 > 解决方案 > 如何替换 DefaultHeaderFilterStrategy

问题描述

我知道我可以为特定端点设置 HeaderFilterStrategy,但是......

如何DefaultHeaderFilterStrategy使用适用于所有路线的自定义策略覆盖 ?

我们正在使用 Camel 的 Servlet 监听器。我们可以在配置中提供一些东西(在此处记录)来替换DefaultHeaderFilterStrategy我们自己的类吗?

标签: apache-camel

解决方案


您可以创建自己的HeaderFilterStrategy类实现并在端点配置中引用它

<lang:groovy id="MyHeaderFilter">
    <lang:inline-script>
        import org.apache.camel.Exchange
        import org.apache.camel.spi.HeaderFilterStrategy

        class MyHeaderFilter implements HeaderFilterStrategy {
            public boolean applyFilterToCamelHeaders(String headerName, Object headerValue, Exchange exchange) {
                return false
            }
            public boolean applyFilterToExternalHeaders(String headerName, Object headerValue, Exchange exchange) {
                return !(headerName in ['desirableHeaderName'])
}
        }
    </lang:inline-script>
</lang:groovy>

接着

<to uri="activemq:dummy?headerFilterStrategy=#MyHeaderFilter"/>

UPD。
也可以为整个组件设置自定义标题过滤器

<bean id="activemq" class="org.apache.activemq.camel.component.ActiveMQComponent">
  <property name="headerFilterStrategy" ref="MyHeaderFilter"/>
</bean>

推荐阅读