- Fixed destroy bean logic in AbstractMessageChannelBinder to ensure that it only destroys beans that are 'reachable' (have bean definitions)
Resolves#1870
Togethere with a2dc34a160 commit this should
address the issues where functions are being bootstrapped when annotation-based configuration is present
Resolves#1865
- This fix addresses the issue where framework assumed the existance of 'output' channel where it is not always the case
- It also addresses the binary relationship of annotation-based and functional model where you can use one or the other, meaning
functions will not work with annotation-based bindings with the exception of composing to the existing output (e.g., existing legacy app)
- It alos upgrades reactor to Dysprosium-SR1
Resolves#1852
- Switched to using SI fix for channel-to-publisher adaptation
- Fixed retries for reactive functions
- Fixed DLQ handling for reactive functions
- Updated documentation
Resolves#1818
Currently, non-native partitioning (e.g. RabbitMQ) require
an instance per partition.
Add support to allow one instance to consume from multiple
partitions.
Changed instanceIndex from single valued to List
Added a new property to support index list to spawn multiple consumers
added test for the index list usage
added author to the changed files. Fixes-gh-1232
Using object utils to check if a list is empty
Only look at indexes when partitioned
Add docs for `instanceIndexList`
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