GH-8705 Expose errorOnTimeout on MessagingGateway
Fixes https://github.com/spring-projects/spring-integration/issues/8705 an internal `MethodInvocationGateway` is a `MessagingGatewaySupport` extension with all the logic available there. One of the option introduced in `5.2.2` to be able to throw a `MessageTimeoutException` instead of returning `null` when no reply received in time from downstream flow * Expose an `errorOnTimeout` on the `@MessagingGateway` and `GatewayEndpointSpec` * Propagate this option from a `GatewayProxyFactoryBean` down to its internal `MethodInvocationGateway` implementation * Modify couple tests to react for `errorOnTimeout` set to `true` * Document the feature Fix language in Docs Co-authored-by: Gary Russell <grussell@vmware.com>
This commit is contained in:
@@ -794,6 +794,8 @@ If a component downstream is still running (perhaps because of an infinite loop
|
||||
However, if the timeout has been reached before the actual reply was produced, it could result in a 'null' return from the gateway method.
|
||||
You should understand that the reply message (if produced) is sent to a reply channel after the gateway method invocation might have returned, so you must be aware of that and design your flow with it in mind.
|
||||
|
||||
Also see the `errorOnTimeout` property to throw a `MessageTimeoutException` instead of returning `null`, when a timeout occurs.
|
||||
|
||||
[[downstream-component-returns-null-]]
|
||||
=== Downstream Component Returns 'null'
|
||||
|
||||
@@ -838,4 +840,8 @@ At that time, the calling thread starts waiting for the reply.
|
||||
If the flow was completely synchronous, the reply is immediately available.
|
||||
For asynchronous flows, the thread waits for up to this time.
|
||||
|
||||
Starting with version 6.2, the `errorOnTimeout` property of the internal `MethodInvocationGateway` extension of the `MessagingGatewaySupport` is exposed on the `@MessagingGateway` and `GatewayEndpointSpec`.
|
||||
This option has exactly the same meaning as for any inbound gateway explained in the end of xref:endpoint-summary.adoc#endpoint-summary[Endpoint Summary] chapter.
|
||||
In other words, setting this option to `true`, would lead to the `MessageTimeoutException` being thrown from a send-and-receive gateway operation instead of returning `null` when the receive timeout is exhausted.
|
||||
|
||||
See xref:dsl/integration-flow-as-gateway.adoc[`IntegrationFlow` as Gateway] in the Java DSL chapter for options to define gateways through `IntegrationFlow`.
|
||||
|
||||
@@ -36,6 +36,8 @@ See, for example, `transformWith()`, `splitWith()` in xref:dsl.adoc#java-dsl[ Ja
|
||||
- A new `spring.integration.endpoints.defaultTimeout` global property has been introduced to override the default 30 seconds timeout for all the endpoints in the application.
|
||||
See xref:configuration/global-properties.adoc[Global Properties] for more information.
|
||||
|
||||
- The `@MessagingGateway` and `GatewayEndpointSpec` provided by the Java DSL now expose the `errorOnTimeout` property of the internal `MethodInvocationGateway` extension of the `MessagingGatewaySupport`.
|
||||
See xref:gateway.adoc#gateway-no-response[ Gateway Behavior When No response Arrives] for more information.
|
||||
[[x6.2-websockets]]
|
||||
=== WebSockets Changes
|
||||
|
||||
|
||||
Reference in New Issue
Block a user