INT-4365: Improve notPropagatedHeaders function
JIRA: https://jira.spring.io/browse/INT-4365 It is much useful to configure the `notPropagatedHeaders` as a set of patterns to match. In this case we can filter a group of headers with the common prefix or suffix * Allow to configure `AbstractMessageProducingHandler.setNotPropagatedHeaders` as simple patterns; the `*` means filter all - not copy request headers at all - similar to `transformer` behavior * Add `ConsumerEndpointSpec.notPropagatedHeaders()` for Java DSL * Add `not-propagated-headers` to the `<service-activator>` Address PR comments; some other improvements * Fix `ConsumerEndpointSpec#notPropagatedHeaders()` log message * Improve `AbstractMessageProducingHandler.notPropagatedHeaders() logic so any `*` in the set of patterns eliminates all others since it has a highest priority * Expose `requires-reply` for the `<transformer>` as a `true` by default * Refactor a bit `AbstractStandardMessageHandlerFactoryBean` hierarchy to avoid duplicated code * Fix `message.adoc` * Add `noHeadersPropagation` flag to the `AbstractMessageProducingHandler` * Rework logic in the `updateNotPropagatedHeaders()` to store the array of patterns instead of `Set` to avoid extra operation on each message * Combine `noHeadersPropagation` with the `shouldCopyRequestHeaders()` in the `createOutputMessage()` for logic to determine if we should start the copy-headers procedure at all * Revert `AbstractMessageProducingHandler.selectiveHeaderPropagation` * Optimize `AmqpOutboundGatewayParserTests` performance from 3 secs to 0.5 Fix more NPEs in the `AbstractMessageProducingHandler`
This commit is contained in:
committed by
Gary Russell
parent
7c701ca5e6
commit
90c46f5a79
@@ -394,9 +394,16 @@ Also, a header is only propagated if it does not already exist in the outbound m
|
||||
|
||||
Starting with _version 4.3.10_, you can configure message handlers (that modify messages and produce output) to suppress the propagation of specific headers.
|
||||
Call the `setNotPropagatedHeaders()` or `addNotPropagatedHeaders()` methods on the `MessageProducingMessageHandler` abstract class, to configure the header(s) you don't want to be copied.
|
||||
|
||||
You can also globally suppress propagation of specific message headers by setting the `readOnlyHeaders` property in `META-INF/spring.integration.properties` to a comma-delimited list of headers.
|
||||
|
||||
IMPORTANT: Header propagation suppression does not apply to those endpoints that don't modify the message, e.g. <<bridge, bridges>> and <<router, routers>>
|
||||
Starting with _version 5.0_, the `setNotPropagatedHeaders()` implementation on the `AbstractMessageProducingHandler` applies the simple patterns (`xxx*`, `*xxx`, `*xxx*` or `xxx*yyy`) to allow filtering headers with a common suffix or prefix.
|
||||
See `PatternMatchUtils` JavaDocs for more information.
|
||||
When one of the patterns is `*` (asterisk), no headers are propagated; all other patterns are ignored.
|
||||
In this case the Service Activator behaves the same way as Transformer and any required headers must be supplied in the `Message` returned from the service method.
|
||||
The option `notPropagatedHeaders()` is available in the `ConsumerEndpointSpec` for Java DSL, as well as for XML configuration of the `<service-activator>` component as a `not-propagated-headers` attribute.
|
||||
|
||||
IMPORTANT: Header propagation suppression does not apply to those endpoints that don't modify the message, e.g. <<bridge, bridges>> and <<router, routers>>.
|
||||
|
||||
|
||||
[[message-implementations]]
|
||||
|
||||
Reference in New Issue
Block a user