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

Spring for Apache Kafka 2.1.0.RELEASE (and 1.3.2, 2.0.2) Available

I am pleased to announce the availability of Spring for Apache Kafka 2.1.0.RELEASE.

In addition, maintenance releases 1.3.2.RELEASE and 2.0.2.RELEASE are available, containing important bug fixes. See also below for information about spring-integration-kafka 3.0.0.RELEASE. It is recommended that all users upgrade.

The main purpose of the 2.1 release is to upgrade the kafka-clients library to 1.0.0, but we have included a few improvements:

  • Sometimes, when a message can’t be processed, you may wish to stop the container so the condition can be corrected and the message re-delivered. The framework now provides the ContainerStoppingErrorHandler for record listeners and ContainerStoppingBatchErrorHandler for batch listeners.

  • The KafkaAdmin now supports increasing partitions when a NewTopic bean is detected with a larger number of partitions than currently exist on the topic.

  • StringJsonMessageConverter and JsonSerializer/JsonDeserializer now pass and consume type information in Headers. This allows multiple types to be easily sent/received on the same topic:

Read more...

Spring AMQP 2.0 Release Candidate 2 Available

I am pleased to announce that the 2.0.0.RC2 release candidate of Spring AMQP is now available in the Spring milestone repository.

Since the first release candidate the primary changes are:

  • update to the new 5.0 version of the amqp-client library

  • increase the default prefetch count in listener containers

A complete list of changes since RC1 can be found in the release notes.

Thanks to all the community members for their feedback and contributions!

The GA release will follow shortly after the Spring Framework 5.0 GA release.

Read more...

Spring Cloud Stream Ditmars/1.3 Release Candidate Announcement

We are pleased to announce that the release candidate Spring Cloud Stream Ditmars.RC1 is available for use in the Spring Milestone repository. The release notes include relevant information about version compatibility with Spring Boot, Spring Cloud, Spring AMQP, and Spring for Apache Kafka.

Kafka Streams for Apache Kafka

This release targets the promotion of Kafka Streams for Apache Kafka support as a top-level project in the Apache Kafka binder implementation. With Kafka Streams for Apache Kafka positioned as a first-class citizen, developers can now build Spring Cloud Stream applications by taking advantage of the Kafka Streams API at the binding level, so that it is much simpler to implement real-time data-processing business functions. The developers can focus on the functionality as opposed to the infrastructure and the messaging middleware configuration specifics, which Spring Cloud Stream tackles head-on by addressing it out-of-the-box. In addition to writing standard stream processing applications, Spring Cloud Stream binder for Kafka Streams enables developers to write applications that leverage on the interactive query features of Kafka Streams. Check out the samples for more details.

Read more...

Spring For Apache Kafka 2.0 and 1.3 Release Candidates Available

We are pleased to announce the availability of the 2.0.0.RC1 release candidate of the Spring for Apache Kafka 2.0 version.

As discussed in the 1.3.0.M2 announcement, we are concurrently releasing 1.3 with 2.0, where 1.3 contains a subset of the 2.0 features, supporting the Kafka 0.11.x.x client, while still supporting Spring Framework 4.3. As such, the 1.3.0.RC1 release candidate is also available.

They are available for download from the Milestone Repository:

repositories {
    maven { url 'http://repo.spring.io/libs-milestone' }
}
compile "org.springframework.kafka:spring-kafka:2.0.0.RC1"
Read more...

Spring AMQP 2.0 Release Candidate, 1.7.4 and 1.6.11 Are Available

I am pleased to announce that the 2.0.0.RC1 release candidate of Spring AMQP is now available in the Spring milestone repository.

This release adds some minor fixes/improvements since the final milestone Milestone 5.

Thanks to all the community member for their feedback and contributions!

The GA release will follow shortly after the Spring Framework 5.0 GA release in September.

For a complete list of changes in 2.0, see What’s New in the reference manual.

Maintenance releases 1.7.4 and 1.6.11 are also available now.

Read more...

Spring AMQP 2.0.0 Milestone 4 is Available

I am pleased to announce that the fourth milestone of Spring AMQP 2.0 2.0.0.M4 is now available in the Spring milestone repository.

Features since the last milestone include…​

  • The new DirectMessageListenerContainer now supports configuring the number of messages to process between acks.

  • You can now specify container concurrency on the @RabbitListener annotation.

The release candidate is expected to be released in early June with the GA shortly after the Spring Framework 5.0 GA release.

For a complete list of changes in 2.0, see What’s New in the reference manual; also see the release notes for 2.0.0.M1, 2.0.0.M2, 2.0.0.M3, as well as 2.0.0.M4.

Read more...

Spring For Apache Kafka 2.0 Milestone 1 Available

We are very pleased to announce the availability of the first milestone of the Spring for Apache Kafka 2.0 release 2.0.0.M1.

Significant new features in the 2.0 line include:

  • Support for timestamps in the KafkaTemplate.

  • Seek to beginning/end of topics.

  • New threading model facilitated by KIP-62 - now that the consumer client does not rely on poll() being called frequently, the threading model is much simpler; avoiding the need for internal pause() / resume() processing. Listeners are now always invoked on the consumer thread. This, in turn, has facilitated:

  • ConsumerAwareMessageListener (and BatchConsumerAwareMessageListener) are provided so that listener implementations can access the Consumer<?, ?> object to perform operations such as pause(), resume(), metrics() etc.

  • @KafkaListener POJO methods can now be annotated with @SendTo to send the method result to some other topic.

Read more...