Related to https://github.com/spring-cloud/spring-cloud-stream-binder-aws-kinesis/issues/107
In some cases there is not enough configuration properties to setup
a producing `MessageHandler` in the binder.
Or we just can't do that via properties because some real object is
required for particular MH option.
For example in the AWS Kinesis Binder end-user would like to provide
a custom `AsyncHandler` which definitely cannot be expressed via properties
* Introduce a `ProducerMessageHandlerCustomizer` similar to existing
`MessageSourceCustomizer` and `ListenerContainerCustomizer`
* Add an `AbstractMessageChannelBinder.setProducerMessageHandlerCustomizer()`
to avoid breaking changes with an additional constructor arg
* Use a provided `handlerCustomizer` in the `customizeProducerMessageHandler()`
called from the `doBindProducer()` on the current `MH` before its
`afterPropertiesSet()`
* It is a target binder configuration responsibility to inject a
`ProducerMessageHandlerCustomizer` into the binder bean
Resolves#1828
When multiple binders are present with at least one of them is marked with BindingProvider,
it skips scanning functions for regular message channel based binders.
Resolves#1820
- Currently there is no multi-out support for Supplier and I am not really sure what the use case would be so holding off.
- The logic in FunctionConfiguration effectively split in bootstrapping simple functions (e.g., Function<String, String>) vs. multi-in/out (e.g., Function<Tuple2<Flux<String>, Flux<String>>, Flux<String>>). This is temporary given that multi-in/out is still considered WIP. Once it becomes stable we can merge the two two for consistency.
- Added multiple input/output support for TestBinder
- Updated documentation
Resolves#1746Resolves#1745Resolves#1314