close

Gary Russell

Gary Russell

Project Lead, Spring for Apache Kafka, AMQP

Pennsylvania, USA

Gary has been in software engineering, concentrating on Enterprise Integration, for over 30 years on various platforms, and in the Java space since the late '90s. He has been developing with the Spring Framework since 2004. He has been a committer on the Spring Integration and Spring AMQP projects for over 9 years; he started the Spring for Apache Kafka project in 2016. He leads both Spring AMQP and Spring for Apache Kafka and is a former lead of Spring Integration.
Blog Posts by Gary Russell

Spring for Apache Kafka 2.5.0 Release Candidate

The 2.5.0.RC1 release candidate is now avaialable in the Spring milestone repo.

Update: 2.5.0.RELEASE was released on May 13th.

Highlights:

  • kafka-clients 2.5.0 (alignment of version numbers is coincidental).

  • Support for re-committing retryable offset commit exceptions for retained partitions when using cooperative rebalancing.

  • Support for the new "fetch-offset-request" procuder fencing (when brokers are 2.5 or higher), requiring fewer producers.

  • Support for static group membership.

  • More integration with Micrometer.

  • Optional Delivery Attempts header.

  • RecoveringBatchErrorHandler can commit a partial batch and replay from failed record in a batch (with cooperation of the listener); this is now the default for a batch listener.

  • Default error handler for record listener is now the SeekToCurrentErrorHandler.

  • Overridable producer properties in the KafkaTemplate allowing multiple templates to use the same producer factory.

  • Simple String serializer and deserializer are now provided.

  • More flexibility to determin the type to create in the JsonDeserializer.

Read more...

Spring for Apache Kafka 2.4 is Available

To support last week’s Apache Kafka 2.4.0 release, I am pleased to announce that the Spring for Apache Kafka 2.4 - 2.4.0.RELEASE - is available in maven central.

This version is essentially functionally equivalent to 2.3.x, but is compiled against the 2.4.0 kafka-clients and supports the new incremental rebalancing protocol.

The 2.4.0 kafka-clients are not binary compatible with Spring for Apache Kafka 2.3 so if you wish to use the 2.4.0 clients, you must upgrade to this version. See the appendix in the reference manual for how to override the jar versions, especially if you are using Spring Boot for dependency management and/or you are using the test embedded Kafka broker.

Read more...

Spring for Apache Kafka 2.4 Release Candidate

Hot on the heels of the recent Apache Kafka 2.4.0 release, I am pleased to announce the release candidate for Spring for Apache Kafka 2.4 - 2.4.0.RC1 - is available in the Spring milestone repository.

This version is essentially functionally equivalent to 2.3.x, but is compiled against the 2.4.0 kafka-clients and supports the new incremental rebalancing protocol.

The 2.4.0 kafka clients are not binary compatible with Spring for Apache Kafka 2.3 so if you wish to use the 2.4.0 clients, you must upgrade to this version. See the appendix in the reference manual for how to override the jar versions, especially if you are using Spring Boot and/or the test embedded kafka broker.

Read more...

Spring for RabbitMQ (Spring AMQP) 2.2 is now available

We are pleased to announce the following maintenance releases are now available.

All users are encouraged to upgrade to these versions

The 2.2.0 release is the first release of the newest line for this project.

What’s New chapter for more information, but here are a few highlights:

  • Micrometer Timer s are now supported to monitor listener performance.

  • @RabbitListener s can now receive a batch of messages in a List<?>, batches can either be created on the producer side, or a SimpleMessageListenerContainer can create a batch from incoming discrete messages.

  • Spring Data Projection interfaces are now supported as @RabbitListener payloads.

  • An option is now provided to shuffle the Addresses before connecting, instead of always trying the addresses in order.

Read more...

Spring for Apache Kafka 2.3 is now available

We are pleased to announce the following releases are now available.

All users are encouraged to upgrade to these versions

The 2.3.0 release is the first release of the newest line for this project.

Refer to the What’s New chapter for more information, but here are a few highlights:

Producing

  • Option to use a producer per thread, to avoid blocking other threads when flushing.

  • The AggregatingReplyingKafkaTemplate extension to the ReplyingKafkaTemplate is provided to aggregate replies from multiple consumers.

Read more...

New Spring Integration, AMQP, Kafka Maintenance and Milestone Releases

We are pleased to announce the following maintenance releases are now available.

All users are encouraged to upgrade to these versions

Spring for Apache Kafka

In addition, milestone 4 (and the previously unannounced milestone 3) of the next generations are also available:

Read more...

Spring for Apache Kafka 2.3 Milestone 2

We are pleased to announce the availability of the second milestone of the Spring for Apache Kafka 2.3 release - 2.3.0.M2.

Highlights

  • SeekToCurrentErrorHandler can be configured to not retry certain exceptions.

  • The new RecoveringDeserializationExceptionHandler can recover from failed deserialization operations in Kafka Streams applications, for example to send the failed message to a dead-letter topic.

  • The new HeaderEnricher transformer can be added to a Kafka Streams topology to add headers.

  • The new MessagingTransformer can be used to invoke a Spring Integration flow within a Kafka Streams topology.

  • The new AggregatingReplyingKafkaTemplate can send a record and wait for responses from multiple consumers.

For more information see the What’s New chapter in the documentation and the change logs.

In addition, Spring Integration for Apache Kafka (spring-integration-kafka) 3.2.0.M2 is available; it is based on Spring for Apache Kafka 2.3 and Spring Integration 5.2.

  • The KafkaMessageSource consumer can now be paused/resumed.

  • The KafkaMessageSource consumer can now be configured to retrieve multiple records on each poll.

  • XML configuration is now available for all components.

See the Spring Integration Chapter for more information.

Read more...

Spring AMQP (Spring for RabbitMQ) 2.2 Milestone 2

We are pleased to announce the availability of the second milestone of the Spring AMQP 2.2 release - 2.2.0.M2.

Highlights

  • Spring Data "Projection Interfaces" are now supported by the Jackson message converter.

  • @RabbitListener methods can now receive batched messages as a List<?> instead of one-at-a-time.

  • You can now override the default acknowledge mode and executor directly on the @RabbitListener annotation.

For more information, see the What’s New chapter and the change logs.

Read more...

Spring for Apache Kafka 2.2 Released

I am pleased to announce that Spring for Apache Kafka 2.2.0.RELEASE is now available.

While the 2.1.x release is compatible with the 2.0.0 kafka-clients jar, (since 2.1.9), this version requires 2.0.0 (and provides a 2.0.0 embedded broker for testing).

Highlights

  • The SeekToCurrentErrorHandler can now "skip" records that fail repeatedly

  • Such "skipped" records can be published to a dead-letter topic (or otherwise disposed of by application code)

    • Headers are added with diagnostics about the failure

  • When using transactions, the same functionality can be achieved with the default AfterRollbackProcessor

  • You can now use the listener container factory to create any arbitrary listener container, not just containers for @KafkaListener s

    • This allows more convenient use of Spring Boot’s auto configuration properties for any container

  • @KafkaListener annotations can now override the container factory’s concurrency and autoStartup properties

  • The new ErrorhandlingDeserializer can catch deserialization exceptions which are then routed to the ErrorHandler

  • The embedded kafka broker can now be used with JUnit 5 tests

For more information see the What’s New chapter in the documentation and the change log.

In addition, Spring Integration for Apache Kafka (spring-integration-kafka) 3.1.0.RELEASE is available; it is based on Spring for Apache Kafka 2.2 and Spring Integration 5.1.

Read more...

New Spring Integration, AMQP, Kafka Maintenance and Milestone Releases

We are pleased to announce the following maintenance releases are now available.

All users are encouraged to upgrade to these versions

Spring AMQP (Spring for RabbitMQ)

Spring for Apache Kafka

In addition, the first milestones of the next generations are also available:

Read more...