| [[Howtoavoidsendingsomeorallmessageheaders-Howtoavoidsendingsomeorallmessageheaders]] |
| === How to avoid sending some or all message headers? |
| |
| When I send a message to a Camel endpoint such as the |
| <<mail-component,Mail>> component, then the mail include some message |
| headers I do not want. How can I avoid this? |
| |
| [[Howtoavoidsendingsomeorallmessageheaders-UseremoveHeadersintheroute]] |
| ==== Use removeHeaders in the route |
| |
| This is a gotcha more people encounter. However it's very easy to solve. |
| To remove all headers use a wildcard expression: |
| |
| [source,java] |
| ---- |
| from(...).removeHeaders("*").to("smtp://....") |
| ---- |
| |
| Similarly to remove all headers except some of your own (`myheader1` and |
| `myheader2`) use a wildcard with a vararg: |
| |
| [source,java] |
| ---- |
| from(...).removeHeaders("*", "myheader1", "myheader2").to("smtp://....") |
| ---- |
| |
| To do (a similar thing) in XML DSL you simply do: |
| |
| [source,xml] |
| ---- |
| <route> |
| <from uri="..."/> |
| <removeHeaders pattern="*" excludePattern="header1|header2"/> |
| <to uri="smtp://..."/> |
| </route> |
| ---- |
| |
| At present, the `excludePattern` only supports one header name (which |
| can be include wild cards or regular expressions). We tackle this |
| limitation with |
| https://issues.apache.org/jira/browse/CAMEL-6445[CAMEL-6445]. |
| |
| Again to remove only Camel headers but no other transport headers: |
| |
| [source,java] |
| ---- |
| from(...).removeHeaders("Camel*").to("smtp://....") |
| ---- |
| |
| To do this in XML DSL you simply do: |
| |
| [source,xml] |
| ---- |
| <route> |
| <from uri="..."/> |
| <removeHeaders pattern="Camel*"/> |
| <to uri="smtp://..."/> |
| </route> |
| ---- |
| |
| There is also a removeHeader in the DSL to remove a single header. But |
| it does not support patterns, so you can only remove a single header by |
| its name. |
| |
| [[Howtoavoidsendingsomeorallmessageheaders-UseHeaderFilterStrategy]] |
| ==== Use HeaderFilterStrategy |
| |
| An alternative is that some of the Camel |
| link:../component.adoc[Components] supports configuring a custom header |
| filter strategy. |
| This allows you to implement the |
| `org.apache.camel.spi.HeaderFilterStrategy` interface, where you can |
| filter unwanted headers. |
| Though it's often easier to use the `removeHeaders` in the Camel route as |
| shown above. |