GH-916: MC Binder Producer Error Infrastructure
Initial Commit for GH-916. - register a pubsub error channel. - register and subscribe a bridge handler to bridge it to the global error channel. - pass the error channel to the implementation so it can wire it into the outbound endpoint. - destroy the infrastructure when unbinding. Javadoc Polishing Add test case. temp update to SI 4.3.12 GH-802 - Error Handling Documentation Resolves #802
This commit is contained in:
committed by
Vinicius Carvalho
parent
3ca2138a32
commit
0eab8a5fa7
@@ -447,7 +447,23 @@ Spring Cloud Stream supports publishing error messages received by the Spring In
|
||||
error channel. Error messages sent to the `errorChannel` can be published to a specific destination
|
||||
at the broker by configuring a binding for the outbound target named `error`. For example, to
|
||||
publish error messages to a broker destination named "myErrors", provide the following property:
|
||||
`spring.cloud.stream.bindings.error.destination=myErrors`
|
||||
`spring.cloud.stream.bindings.error.destination=myErrors`.
|
||||
|
||||
[[binder-error-channels]]
|
||||
===== Message Channel Binders and Error Channels
|
||||
|
||||
Starting with _version 1.3_, some `MessageChannel` - based binders publish errors to a discrete error channel for each destination.
|
||||
In addition, these error channels are bridged to the global Spring Integration `errorChannel` mentioned above.
|
||||
You can therefore consume errors for specific destinations and/or for all destinations, using a standard Spring Integration flow (`IntegrationFlow`, `@ServiceActivator`, etc).
|
||||
|
||||
On the consumer side, the listener thread catches any exceptions and forwards an `ErrorMessage` to the destination's error channel.
|
||||
The payload of the message is a `MessagingException` with the normal `failedMessage` and `cause` properties.
|
||||
Usually, the raw data received from the broker is included in a header.
|
||||
For binders that support (and are configured with) a dead letter destination; a `MessagePublishingErrorHandler` is subscribed to the channel, and the raw data is forwarded to the dead letter destination.
|
||||
|
||||
On the producer side; for binders that support some kind of async result after publishing messages (e.g. RabbitMQ, Kafka), you can enable an error channel by setting the `...producer.errorChannelEnabled` to `true`.
|
||||
The payload of the `ErrorMessage` depends on the binder implementation but will be a `MessagingException` with the normal `failedMessage` property, as well as additional properties about the failure.
|
||||
Refer to the binder documentation for complete details.
|
||||
|
||||
===== Using @StreamListener for Automatic Content Type Handling
|
||||
|
||||
@@ -1246,6 +1262,11 @@ When native encoding is used, it is the responsibility of the consumer to use ap
|
||||
Also, when native encoding/decoding is used the `headerMode` property is ignored and headers will not be embedded into the message.
|
||||
+
|
||||
Default: `false`.
|
||||
errorChannelEnabled::
|
||||
When set to `true`, if the binder supports async send results; send failures will be sent to an error channel for the destination.
|
||||
See <<binder-error-channels>> for more information.
|
||||
+
|
||||
Default: `false`.
|
||||
|
||||
[[dynamicdestination]]
|
||||
=== Using dynamically bound destinations
|
||||
|
||||
Reference in New Issue
Block a user