apache-camel - 如何替换 DefaultHeaderFilterStrategy
问题描述
我知道我可以为特定端点设置 HeaderFilterStrategy,但是......
如何DefaultHeaderFilterStrategy
使用适用于所有路线的自定义策略覆盖 ?
我们正在使用 Camel 的 Servlet 监听器。我们可以在配置中提供一些东西(在此处记录)来替换DefaultHeaderFilterStrategy
我们自己的类吗?
解决方案
您可以创建自己的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>
推荐阅读
- r - 使用 TIdymodels 调优 XGBoost - 12 小时后仍未完成
- excel - 通过文件夹中的所有工作簿快速删除空行
- google-data-studio - 从社区连接器中的 getData 有效负载中检索排序信息
- next.js - 如何在 Nextjs AMP 组件中调用异步 API 调用?
- python - 如果第 2 行包含第 1 行的部分信息,如何确定两行是否相同(相似)?
- r - 在 R 中并行化严格的 LASSO
- c++ - RVO 或为 std::list 移动
- macos - net50 Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) 在 MacOS 上返回一个空字符串?
- c# - InvalidOperationException:无法翻译 LINQ 表达式
- javascript - 反应原生图像边框半径太大