GH-2967: Fix ScatterGatherH for headers copy (#2968)
* GH-2967: Fix ScatterGatherH for headers copy Fixes https://github.com/spring-projects/spring-integration/issues/2967 The `ChannelInterceptor` is added into the `this.gatherChannel` on each request message making a subsequent requests for scatter-gather as halting on reply. * Add an interceptor into an injected `this.gatherChannel` only once during `ScatterGatherHandler` initialization * Introduce `ORIGINAL_REPLY_CHANNEL` and `ORIGINAL_ERROR_CHANNEL` headers to carry a request reply and error channels from headers * Populate `REPLY_CHANNEL` and `ERROR_CHANNEL` headers back before sending scattering replies into gatherer * Transfer a `GATHER_RESULT_CHANNEL` header now directly from the scatter message to make it available in the reply from the gatherer * Add note about those headers in the `scatter-gather.adoc` * Modify `ScatterGatherTests` to be sure that `ScatterGatherHandler` works for several requests **Cherry-pick to 5.1.x** * * Fix language in doc
This commit is contained in:
committed by
Gary Russell
parent
36c14ef179
commit
d79c06a987
@@ -209,5 +209,7 @@ Such an exception `payload` can be filtered out in the `MessageGroupProcessor` o
|
||||
|
||||
NOTE: Before sending scattering results to the gatherer, `ScatterGatherHandler` reinstates the request message headers, including reply and error channels if any.
|
||||
This way errors from the `AggregatingMessageHandler` are going to be propagated to the caller, even if an async hand off is applied in scatter recipient subflows.
|
||||
For successful operation, a `gatherResultChannel`, `originalReplyChannel` and `originalErrorChannel` headers must be transferred back to replies from scatter recipient subflows.
|
||||
In this case a reasonable, finite `gatherTimeout` must be configured for the `ScatterGatherHandler`.
|
||||
Otherwise it is going to be blocked waiting for a reply from the gatherer forever, by default.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user