GH-107: Make Splitter Function as Flux
-based
#128
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Fixes: #107
When we have a composition like this:
Then final "function" signature is like this
Supplier<Flux<Message<List<Message<?>>>>>
. And that is exactly what we don't expected from the splitter in the end of the composition. While Spring Cloud Stream supports de-batching, it works for aList
output only if function is bound by itself. In case of composition we got just aSupplier
.SplitterFunctionConfiguration
forsplitterFunction
fromFunction<Message<?>, List<Message<?>>>
toFunction<Flux<Message<?>>, Flux<Message<?>>>
signature to support every possible simple and composed bindings in Spring Cloud StreamSplitterFunctionApplicationTests
for new expectedFunction<Flux<Message<?>>, Flux<Message<?>>>
signaturezip-split-rabbit-binder
sample to not use aflattenFunction
workaround and fully rely on whatever is new for thesplitterFunction
ZipSplitRabbitBinderApplicationTests
moving the@RabbitListener
into a@TestConfiguration
. Apparently in a new Spring Boot version the test class is registered as a bean much later than normal application context startup. Therefore, even if the@RabbitListener
parsed and registered properly, theRabbitAdmin
bean has been already started to see our extra bean definition for the@QueueBinding
Changing signature for the splitterFunction to reactive types would make it working even with a Supplier composition.