Deprecate Reactive Kafka Binder in 4.3.0

See details here: https://spring.io/blog/2025/05/20/reactor-kafka-discontinued

Reactive Kafka binder will be compleltely removed in a future release

Signed-off-by: Soby Chacko <soby.chacko@broadcom.com>
This commit is contained in:
Soby Chacko
2025-05-23 19:39:46 -04:00
parent 859ac8d1ca
commit 5425cdd270
7 changed files with 36 additions and 1 deletions

View File

@@ -89,7 +89,12 @@ import org.springframework.util.StringUtils;
* @author Soby Chacko
* @since 4.0
*
* @deprecated since 4.3
* See the updates in: <a href="https://spring.io/blog/2025/05/20/reactor-kafka-discontinued">...</a>
* A suggested alternative is to use the regular Kafka binder with reactive types.
* This approach has some limitations as the application need to handle reactive use cases explicitly.
*/
@Deprecated(since = "4.3", forRemoval = true)
public class ReactorKafkaBinder
extends AbstractMessageChannelBinder<ExtendedConsumerProperties<KafkaConsumerProperties>,
ExtendedProducerProperties<KafkaProducerProperties>, KafkaTopicProvisioner>

View File

@@ -41,7 +41,13 @@ import org.springframework.context.annotation.Import;
* @author Gary Russell
* @author Chris Bono
* @author Soby Chacko
*
* @deprecated since 4.3
* See the updates in: <a href="https://spring.io/blog/2025/05/20/reactor-kafka-discontinued">...</a>
* A suggested alternative is to use the regular Kafka binder with reactive types.
* This approach has some limitations as the application need to handle reactive use cases explicitly.
*/
@Deprecated(since = "4.3", forRemoval = true)
@Configuration(proxyBeanMethods = false)
@ConditionalOnMissingBean(Binder.class)
@EnableConfigurationProperties({ KafkaProperties.class, KafkaExtendedBindingProperties.class })

View File

@@ -35,7 +35,13 @@ import org.springframework.scheduling.concurrent.CustomizableThreadFactory;
* {@link org.springframework.boot.actuate.health.HealthIndicator} for Reactor Kafka Binder.
*
* @author Soby Chacko
*
* @deprecated since 4.3
* See the updates in: <a href="https://spring.io/blog/2025/05/20/reactor-kafka-discontinued">...</a>
* A suggested alternative is to use the regular Kafka binder with reactive types.
* This approach has some limitations as the application need to handle reactive use cases explicitly.
*/
@Deprecated(since = "4.3", forRemoval = true)
public class ReactorKafkaBinderHealthIndicator extends AbstractKafkaBinderHealthIndicator {
private final ReactorKafkaBinder binder;

View File

@@ -34,7 +34,13 @@ import org.springframework.util.ObjectUtils;
/**
* @author Soby Chacko
* @since 4.1.2
*
* @deprecated since 4.3
* See the updates in: <a href="https://spring.io/blog/2025/05/20/reactor-kafka-discontinued">...</a>
* A suggested alternative is to use the regular Kafka binder with reactive types.
* This approach has some limitations as the application need to handle reactive use cases explicitly.
*/
@Deprecated(since = "4.3", forRemoval = true)
@Configuration(proxyBeanMethods = false)
@ConditionalOnClass(name = "org.springframework.boot.actuate.health.HealthIndicator")
@ConditionalOnEnabledHealthIndicator("binders")

View File

@@ -36,7 +36,12 @@ import org.springframework.core.Ordered;
* @author Gary Russell
* @since 4.0.2
*
* @deprecated since 4.3
* See the updates in: <a href="https://spring.io/blog/2025/05/20/reactor-kafka-discontinued">...</a>
* A suggested alternative is to use the regular Kafka binder with reactive types.
* This approach has some limitations as the application need to handle reactive use cases explicitly.
*/
@Deprecated(since = "4.3", forRemoval = true)
public interface ReceiverOptionsCustomizer<K, V>
extends BiFunction<String, ReceiverOptions<K, V>, ReceiverOptions<K, V>>, Ordered {

View File

@@ -36,7 +36,12 @@ import org.springframework.core.Ordered;
* @author Gary Russell
* @since 4.0.2
*
* @deprecated since 4.3
* See the updates in: <a href="https://spring.io/blog/2025/05/20/reactor-kafka-discontinued">...</a>
* A suggested alternative is to use the regular Kafka binder with reactive types.
* This approach has some limitations as the application need to handle reactive use cases explicitly.
*/
@Deprecated(since = "4.3", forRemoval = true)
public interface SenderOptionsCustomizer<K, V>
extends BiFunction<String, SenderOptions<K, V>, SenderOptions<K, V>>, Ordered {

View File

@@ -1,6 +1,8 @@
[[reactive-kafka-binder]]
= Overview
NOTE: As of Spring Cloud Stream version 4.3.0, the reactive Kafka binder is deprecated and will be completely removed in a future release. See the related updates in https://spring.io/blog/2025/05/20/reactor-kafka-discontinued[Reactor Kafka Discontinued Blog Post]. Please continue to use the regular message channel based Kafka binder with reactive types. Keep in mind that the applications will need to handle the various reactive use cases explicitly using the reactor programming model and support from the Project Reactor directly.
Kafka binder ecosystem in Spring Cloud Stream provides a dedicated reactive binder based on the https://projectreactor.io/docs/kafka/release/reference/[Reactor Kafka] project.
This reactive Kafka binder enables full end-to-end reactive capabilities such as backpressure, reactive streams etc. in applications based on Apache Kafka.
This reactive Kafka binder enables full end-to-end reactive capabilities such as backpressure, reactive streams, etc. in applications based on Apache Kafka.
When your Spring Cloud Stream Kafka application is written using reactive types (`Flux`, `Mono` etc.), it is recommended to use this reactive Kafka binder instead of the regular message channel based Kafka binder.