Engineering
Releases
News and Events

Spring Batch 4.2 in now GA!

On behalf of the Spring Batch team, I am pleased to announce the general availability of Spring Batch 4.2, which includes a number of new features and performance improvements!

New Features

Spring Batch 4.2 includes the following new features:

Batch Metrics with Micrometer

Spring Batch has always provided users with various metrics through the job repository. However, the ability to consume these metrics and react to them in real time has been muted by the use of a database as the metrics store. This release introduces a new feature that lets you monitor your batch jobs by using a true metrics store through Micrometer. By default, Spring Batch collects metrics (such as job duration, step duration, item read and write throughput, and others) and registers them in Micrometer’s global metrics registry under the spring.batch prefix. These metrics can be sent to any monitoring system supported by Micrometer.

Support for Apache Kafka

Apache Kafka has quickly become a key data store in the modern enterprise. This release adds new ItemReader and ItemWriter implementations for Apache Kafka:

  • KafkaItemReader can read messages from a single partition or multiple partitions of the same topic. This ItemReader is stateful and supports restarting by beginning at the last known good offset.
  • KafkaItemWriter uses a KafkaTemplate from the Spring for Apache Kafka project to send messages to a given topic.

You can find a comprehensive Spring Tips installment about it (by Josh Long).

Support for Apache Avro

Apache Avro is a popular data serialization system and is widely used in today’s streaming and batch applications. This release adds support to read and write Avro data files.

Performance Improvements

This release comes with some major performance improvements that we described in detail in a previous post. Here is an excerpt of the major changes:

  • Enhanced Step Partitioning
  • Improved Job Stop
  • Faster Writes with the JpaItemWriter
  • Optimized Bean Mapping with the BeanWrapperFieldSetMapper

Other Important Changes

We also made the following significant changes:

Dependencies Update

Spring Batch 4.2 is based on Spring Framework 5.2 and has been updated to use Spring Integration 5.2 and Spring Data 2.2.

Updated Documentation

The reference documentation has been updated to match the same style as the other Spring projects.

Master/Slave Terminology Replacement

Words matter. The use of the words “master” and “slave” within our software can be hurtful to members of our community. Given our goal to be as inclusive as possible, we want to do our best to make that right. In this version, the “master”/“slave” terminology used in our APIs (i.e. RemoteChunkingMasterStepBuilder) and the batch XML namespace (i.e. remote-chunking-slave element) have been deprecated and replaced with equivalents that use “manager” and “worker” instead. In the next major version, we will remove the derivatives that use the “master” and “slave” nomenclature permanently.

What’s Next?

We will be working on bug fix releases for all branches of the v4 line (v4.0, v4.1 and v4.2). Please note that v4.0.4 will be the last bug fix release for the 4.0 line, so we highly recommend users to migrate to the latest and greatest: v4.2!

Spring Batch 4.2 can be consumed by using Spring Boot 2.2.0.RC1. Please give it a try and share your feedback! Feel free to ping @michaelminella or @b_e_n_a_s on Twitter or to ask your question on StackOverflow or Gitter. If you find any issue, please open a ticket on Jira.

Spring Batch at SpringOne Platform

SpringOne Platform is around the corner and will be held in Austin next week! Michael Minella and I will have the pleasure to share with you some of the nice new features of Spring Batch v4.2 in our joint talk Batch Processing in 2019. We hope to see you there!

Spring Batch Home | Source on GitHub | Reference Documentation

comments powered by Disqus