* Reactor Kafka Binder Health Indicator
- Provide a new abstraction for general Kafka binder related HealthIndicators.
- Refactor Kafka binder to use the new abstraction
- Add HealthIndicator implementation for the ReactorKafkaBinder
Resolves https://github.com/spring-cloud/spring-cloud-stream/issues/2752
* Addressing PR review
* Addressing PR review
* Addressing PR review
- In StreamBridge send method, there is a path, in which it
tries to find the partition information twice, causing it
to throw errors when using patition key expresson that
involves the payload. This is because, the second time it
tries to find the partition, the payload is already converted
into byte[]. This second partition finding is unncessary.
Resolves https://github.com/spring-cloud/spring-cloud-stream/issues/2759
- When using reactive functions, partition selector strategy does not
use the configured partition count for multiple outbounds. This is
because we take the first configured output binding and apply it's
partition counts on all the outbound reactive streams (Tuples).
Addressing this issue by properly applying the correct partition handling
per output binding.
Resolves https://github.com/spring-cloud/spring-cloud-stream/issues/2750
- The BinderChildContextInitializerTests is failing in Jenkins but not locally. This adds temporary sout to the test in order to see what the issue is in the child context creation.
* KafkaStreams Functions Detection Logic
Kafka Streams functions declared in super classes are no longer
detected by the binder discovery algorithms. Fixing this issue
by properly scanning the methods from the super classes.
Resolves https://github.com/spring-cloud/spring-cloud-stream/issues/2737
* Addressing PR review
* GH-2729: Reactor Kafka Binder SenderResult Support
Resolves https://github.com/spring-cloud/spring-cloud-stream/issues/2729
Allow configuration of a `FluxMessageChannel` to receive `SenderResult`s.
Add `SenderResultMessageHandler` to consume from that channel.
Remove undocumented `sendResult` header, which has no value without the
sender result correlation metadata.
* Add integration test and polish property docs.
- result channel must be FMC for reactive binder.
* Add documentation.
* Remove SenderResultMessageHandler.
* Kafka binder partitioning doc improvements
* Update docs/src/main/asciidoc/kafka/kafka_partitions.adoc
Co-authored-by: Gary Russell <grussell@vmware.com>
* Update docs/src/main/asciidoc/kafka/kafka_partitions.adoc
Co-authored-by: Gary Russell <grussell@vmware.com>
* Update docs/src/main/asciidoc/kafka/kafka_partitions.adoc
Co-authored-by: Gary Russell <grussell@vmware.com>
---------
Co-authored-by: Gary Russell <grussell@vmware.com>
* Reactive Kafka Binder errors when concurrency > 1
When using Reactive Kafka binder, it is allowed to have concurrency > 1.
There is a check in FunctionConfiguration that throws an error if concurrency
is > 1, when using reactive types. Since it is allowed to do so with
Reative Kafka binder, switch this conversion into a warning log message.
Resolves https://github.com/spring-cloud/spring-cloud-stream/issues/2726
* Update core/spring-cloud-stream/src/main/java/org/springframework/cloud/stream/function/FunctionConfiguration.java
Co-authored-by: Gary Russell <grussell@vmware.com>
* Update core/spring-cloud-stream/src/main/java/org/springframework/cloud/stream/function/FunctionConfiguration.java
Co-authored-by: Gary Russell <grussell@vmware.com>
* Update core/spring-cloud-stream-integration-tests/src/test/java/org/springframework/cloud/stream/function/ImplicitFunctionBindingTests.java
Co-authored-by: Gary Russell <grussell@vmware.com>
---------
Co-authored-by: Gary Russell <grussell@vmware.com>
Resolves https://github.com/spring-cloud/spring-cloud-stream/issues/2706
- Update partition count changes in Kafka dynamically during runtime
- Checkstyle fixes
- PartitionHandler changes
- Improved handling of expression with 'payload' in the logic
- Removed getter/setter for PartitionHandler and use ReflectionUtils within Test
- Renamed property to 'dynamicPartitionUpdatesEnabled' and improved documentation (also one line per sentence)
- Improved/renamed test to use embeddedkafka and really test update behaviour
- Javadoc
Spring Boot 3.1 introduced an extra isEnabled method in Ssl class
that causes an ambiguity when used in method references.
Use explicit lambda expression instead.
Latest version of Mockito (5.3.0) used in Spring Boot 3.1.0,
apparently needs the specific Collection type when capturing
values via the ArgumentCaptor. Earlier versisons didn't mandate this.