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

Spring For Apache Kafka 1.2.0 and 1.1.4 Available

We are pleased to announce that these maintenance releases of Spring for Apache Kafka are now available, 1.2.0.RELEASE and 1.1.4.RELEASE.

These versions include several bug fixes and improvements, as well as introduce support for KStreams.

They are functionally equivalent; the 1.2.0.RELEASE is based on the 0.10.2.0 kafka-clients jar and 1.1.4.RELEASE can be used with 0.10.0.x and 0.10.1.x.

While 1.1.4.RELEASE will work at runtime with a 0.10.2.x client library, some breaking changes in the embedded kafka API means that the embedded kafka Junit @Rule in spring-kafka-test will not work and 1.2.0.RELEASE is required for that.

Read more...

Spring AMQP 2.0.0 Milestone 3 is Available

We are pleased to announce that the third milestone for the Spring AMQP 2.0 release (2.0.0.M3) is now available.

36 JIRA Issues are included in this release, including bug fixes and a number of new features:

  • Initial support for broker-less integration testing - the TestRabbitTemplate discovers listener containers in the application context and invokes those containers' listeners for send() and sendAndReceive() operations. We intend to flush out this capability with more features before GA, including routing, and simulation of the various exchange types supported by RabbitMQ. Feedback is welcome.

  • Rollback with an external transaction manager is now consistent with local transactions.

  • The 4.1.x amqp-client library is now the default.

  • The RabbitTemplate now has an invoke() method which allows multiple operations to be performed sequentially on the same channel. This also enables features such as waitForConfirmsOrDie() provided by the underlying library, when sending multiple messages to the same channel.

  • null message properties are no longer included in toString() which makes debug logs easier to read.

  • @QueueBinding annotations now support multiple routing keys, and support custom exchange types.

Read more...

Spring Integration 4.3.7 is Available

On behalf of the Spring Integration team, I am pleased to announce that the 4.3.7.RELEASE of Spring Integration is now available.

This release contains a few important bug fixes as well as a couple of improvements.

In particular, this version uses the recently announced Spring Framework 4.3.6.

Please be aware that some performance issues were detected when using Spring Integration with Spring Framework versions 4.3.4 and 4.3.5. We recommend that all users upgrade to this version, but this could be particularly important for users of Spring Integration versions 4.3.5 and 4.3.6, which used those versions of Spring Framework respectively. See this issue for details to see if you are affected

Read more...