Spring Team
Gary Russell

Gary Russell

Project Lead, Spring Integration, 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 7 years. He leads both projects as well as the Spring for Apache Kafka project and is a co-lead on the Spring Cloud Stream project.
Blog Posts by Gary Russell

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...

Spring Cloud Stream 2.0 - Polled Consumers

This is the second blog in a series of pre-release blogs in preparation for Spring Cloud Stream 2.0.0.RELEASE.

Preface

Spring Cloud Stream 2.0 introduces polled consumers, where the application can control message processing rates.

Introduction

Spring Cloud Stream has the concepts of producers and consumers; when using the messaging paradigm, MessageChannels are bound to destinations (e.g. Kafka topics, Rabbit Exchanges/Queues). To-date, on the consumer side, messages are delivered whenever an idle consumer is available. In effect, the broker controls the rate of delivery; usually, the next message is delivered immediately after the current one is processed.

Read more...

Spring for Apache Kafka 2.1.3, Spring Integration Kafka 3.0.2 are Available

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

In addition, the Spring Integration extension spring-integration-kafka 3.0.2.RELEASE is also available.

While these are point releases in the 2.1.x (and 3.0.x) lines; they introduce some important new features:

Spring for Apache Kafka

  • Request/Reply messaging with the ReplyingKafkaTemplate

  • pause/resume on listener containers

  • default @KafkaHandler method for multi-method @KafkaListener

  • ChainedKafkaTransactionManager to improve transaction synchronization scenarios

Read more...

Spring Messaging Projects Maintenance Releases - Integration, AMQP, Kafka

We are pleased to announce the availability of the following maintenance releases; users are encouraged to upgrade at the earliest opportunity.

Spring Integration 4.3.13, Spring AMQP 1.7.6 will be used in the upcoming Spring Boot 1.5.10 release. Spring Integration 5.0.1, Spring AMQP 2.0.2 and Spring for Apache Kafka 2.1.2 will be used in the upcoming release candidate for Spring Boot 2.0.

Read more...