Apache camel 如何使用camel中的excludePattern来删除标头?

Apache camel 如何使用camel中的excludePattern来删除标头?,apache-camel,fuseesb,jbossfuse,Apache Camel,Fuseesb,Jbossfuse,我尝试使用camel的remove标头,它对某些模式有效,而对其他模式无效 它适用于以下模式 <removeHeaders pattern="*" /> <removeHeaders pattern="CamelFile*" /> 这对我不起作用 <removeHeaders pattern="*File*" /> 是否预期会出现上述情况 此外,在排除模式中,我观察到通配符模式*根本无法识别 <setHeader header

我尝试使用camel的remove标头,它对某些模式有效,而对其他模式无效

它适用于以下模式

<removeHeaders pattern="*" />
<removeHeaders pattern="CamelFile*" />

这对我不起作用

<removeHeaders pattern="*File*" />

是否预期会出现上述情况

此外,在排除模式中,我观察到通配符模式*根本无法识别

        <setHeader headerName="firstCustomHeader">
            <constant>firstCustomHeader</constant>
        </setHeader>
        <setHeader headerName="secondCustomHeader">
            <constant>secondCustomHeader</constant>
        </setHeader>
        <setHeader headerName="thirdCustomHeader">
            <constant>thirdCustomHeader</constant>
        </setHeader>
        <setHeader headerName="fourthCustomHeader">
            <constant>fourthCustomHeader</constant>
        </setHeader>

         <removeHeaders pattern="*" excludePattern="fourth*|third*" />

firstCustomHeader
第二个自定义标题
第三个自定义标题
第四个头
上面删除了所有的头,但排除了excludePattern值

如何实现上述相关模式

驼峰版本2.13.1

  • 您可以使用以下模式完成removeHeaders**文件**
    pattern=“\w+文件\w+”

  • 同样,您的excludePattern也可以通过以下方式实现:
    excludePattern=“第四个\w+|第三个\w+”


  • 这些基本上都是可以测试的正则表达式。

    是的,要么使用正则表达式,要么最终使用单个
    *
    通配符。因此,
    *文件*
    无效,因为它有两个
    *
    ,因此Camel假定它是正则表达式

    所以你应该做一个正则表达式

    pattern=".*File.*"
    
    其中,如果您只有一个
    *
    ,这是匹配通配符的简写,但是
    *
    必须仅在一行末尾,例如

    pattern="File*"
    
    这里记录了语法


    谢谢你,克劳斯。JavaDSL中的模式是否也支持正则表达式?是的,XMLDSL和JavaDSL具有相同的功能