The Spring Blog

Engineering
Releases
News and Events

Flight of the Flux 3 - Hopping Threads and Schedulers

This blog post is the third in a series of posts that aim at providing a deeper look into Reactor’s more advanced concepts and inner workings.

In this post, we explore the threading model, how some (most) operators are concurrent agnostic, the Scheduler abstraction and how to hop from one thread to another mid-sequence with operators like publishOn.

This series is derived from the Flight of the Flux talk, which content I found to be more adapted to a blog post format.

The table below will be updated with links when the other posts are published, but here is the planned content:

Read more...

Spring Boot for Apache Geode & Pivotal GemFire 1.1.4.RELEASE & 1.2.2.RELEASE Available

On behalf of the Spring, Apache Geode & Pivotal GemFire communities, it is my pleasure to announce the release of Spring Boot for Apache Geode & Pivotal GemFire (SBDG) 1.1.4.RELEASE as well as 1.2.2.RELEASE.

Both releases are available in Maven Central.

What’s New

While SBDG 1.1.4.RELEASE primarily aligns with the latest Spring bits in its release line:

  • Spring Framework 5.1.12.RELEASE

  • Spring Boot 2.1.11.RELEASE

  • Spring Data Lovelace-SR14/2.1.14.RELEASE

  • Spring Session for Apache Geode & Pivotal GemFire (SSDG) Bean-SR8/2.1.7.RELEASE (NEW)

And SBDG 1.2.2.RELEASE builds on:

  • Spring Framework 5.2.2.RELEASE

  • Spring Boot 2.2.2.RELEASE

  • Spring Data Moore-SR3/2.2.3.RELEASE

  • Spring Session for Apache Geode & Pivotal GemFire (SSDG) Corn-RELEASE/2.2.1.RELEASE (NEW)

  • Spring Test for Apache Geode & Pivotal GemFire (STDG) 0.0.11.RELEASE (NEW)

SBDG 1.2.2.RELEASE additionally includes the following improvements:

  • Enhancements to @EnableClusterAware Region bean detection.

  • Changes the Pool used in the Spring Session Starter from (the legacy SDG) "gemfirePool" to the Apache Geode "DEFAULT" Pool for convenience, especially when getting started.

See here for more details.

See the changelog for complete details.

Read more...

Spring Session for Apache Geode & Pivotal GemFire 2.1.7.RELEASE and 2.2.1.RELEASE Available

On behalf of the Spring, Apache Geode and Pivotal GemFire communities, it is my pleasure to announce the release of Spring Session for Apache Geode & Pivotal GemFire (SSDG) 2.1.7.RELEASE as well as 2.2.1.RELEASE.

Both releases are available in Maven Central.

What’s New

While SSDG 2.1.7.RELASE primarily aligns with the latest Spring bits in its respective line:

  • Spring Framework 5.1.12.RELEASE

  • Spring Boot 2.1.11.RELEASE

  • Spring Data Lovelace-SR14/2.1.14.RELEASE

  • Spring Session Bean-SR8/2.1.9.RELEASE

And SSDG 2.2.1.RELEASE aligns with:

  • Spring Framework 5.2.2.RELEASE

  • Spring Boot 2.2.2.RELEASE

  • Spring Data Moore-SR3/2.2.3.RELEASE

  • Spring Session Corn-RELEASE/2.2.0.RELEASE

SSDG 2.2.1.RELEASE additionally includes the following improvements:

  • Converts all Spring Session OQL Indexes from HASH to FUNCTIONAL (RANGE) Indexes.

  • Adds support to disable OQL Indexes created by SSDG.

  • And enhances the PdxSerializableSessionSerializer to mark the PDX identity field using the Session ID.

See here for full details.

Read more...

Spring Boot 2.1.x EOL November 1st 2020

With the recent release of Spring Boot 2.2, we’d like to announce that maintenance for Spring Boot 2.1 will end on November 1st 2020.

We’ll keep publishing the occasional maintenance release up until that point, but we recommend that all users consider upgrading to Spring Boot 2.2 as soon as possible. Upgrading to Spring Boot 2.2 from 2.1 should not be too difficult, and upgrade instructions are available on the WIKI.

In order to help track the state of supported releases we’ve also introduced a new “supported versions” WIKI page. You can see at a glance which Spring Boot versions are supported and when they will EOL.

Read more...

This Week in Spring - December 10th, 2019

Hi, Spring fans! Welcome to another installment of This Week in Spring! Today I just wrapped up my appearance in Brisbane, Australia, where I have been for the epic YOW! conference. Truly, one of my all-time favorite shows on the planet. I feel like an imposter in the ranks of the other speakers. I can not recommend this show enough.

I’m just about to board my fight back to San Francisco, and we’ve got a ton of stuff to get to so let’s press on!

Read more...

Spring Cloud Data Flow 2.3.0 GA Released

The release 2.3.0 delivers a lot of enhancements and generic compatibility changes for Spring Boot 2.2.x and Spring Cloud Hoxton.

Continuous Deployment For Tasks

As task applications evolve faster to keep up with business needs, the ability for new versions to be consumed via Data Flow in an automated way is needed. While Data Flow has supported the ability to register multiple versions of a task application in previous iterations, the ability to run them in a practical way by re-hydrating command line arguments, deployment properties, and application properties used in previous executions has been missing. In this version, the storage of those values in a manifest and the ability to both retrieve them to determine if an application needs to be upgraded and apply them to the new execution allows for developers to create continuous deployment flows for their task applications. All these capabilities are readily available through RESTful APIs, as well, so the overall CI/CD workflow for Tasks can be automated.

Read more...

Stream Processing with Spring Cloud Stream and Apache Kafka Streams. Part 6 - State Stores and Interactive Queries

Part 1 - Programming Model
Part 2 - Programming Model Continued
Part 3 - Data deserialization and serialization
Part 4 - Error Handling
Part 5 - Application Customizations

In this part (the sixth and final one of this series), we are going to look into the ways Spring Cloud Stream Binder for Kafka Streams supports state stores and interactive queries in Kafka Streams.

Named State Stores

When you have the need to maintain state in the application, Kafka Streams lets you materialize that state information into a named state store. There are several operations in Kafka Streams that require it to keep track of the state such as count, aggregate, reduce, various windowing operations, and others. Kafka Streams uses a special database called RocksDB for maintaining this state store in most cases (unless you explicitly change the store type). By default, the same information in the state store is backed up to a changelog topic as well as within Kafka, for fault-tolerant reasons.

Read more...

Stream Processing with Spring Cloud Stream and Apache Kafka Streams. Part 5 - Application Customizations

Part 1 - Programming Model
Part 2 - Programming Model Continued
Part 3 - Data deserialization and serialization
Part 4 - Error Handling

In this blog post, we continue our discussion on the support for Kafka Streams in Spring Cloud Stream. We are going to elaborate on the ways in which you can customize a Kafka Streams application.

Customizing the StreamsBuilderFactoryBean

Kafka Streams binder uses the StreamsBuilderFactoryBean, provided by the Spring for Apache Kafka project, to build the StreamsBuilder object that is the foundation for a Kafka Streams application. This factory bean is a Spring lifecycle bean. Oftentimes, this factory bean must be customized before it is started, for various reasons. As described in the previous blog post on error handling, you need to customize the StreamsBuilderFactoryBean if you want to register a production exception handler. Let’s say that you have this producer exception handler:

Read more...

Spring Data R2DBC goes GA

On behalf of the team and everyone that contributed, I am delighted to announce that Spring Data R2DBC 1.0 is generally available from repo.spring.io as well as Maven Central!

Spring Data R2DBC 1.0 is a non-blocking database client library for the just released R2DBC specification that lets you build reactive applications that use SQL databases. The most notable features of Spring Data R2DBC are:

  • Functional-reactive declaration of data access
  • Fluent API
  • Support for Transactions
  • Named parameter support (Dialect-aware)
  • Repositories
  • Kotlin Coroutines extensions
Read more...

Spring Boot 2.2.2 is now available

On behalf of the team and everyone who has contributed, I’m happy to announce that Spring Boot 2.2.2 has been released and is now available from repo.spring.io and Maven Central.

This release includes 88 fixes, improvements, and dependency upgrades. Thanks to all those who have contributed with issue reports and pull requests.

How can you help?

If you’re interested in helping out, check out the “ideal for contribution” tag in the issue repository. If you have general questions, please ask on stackoverflow.com using the spring-boot tag or chat with the community on Gitter.

Read more...