Spring Team
Michael Minella

Michael Minella

Spring Batch & Cloud Task Lead

Naperville, IL

Michael Minella is a software engineer, teacher and author with over a decade of enterprise development experience. He is the project lead of Spring Batch and a member of the expert group for JSR-352 (java batch processing). Michael is the author of Pro Spring Batch from Apress and the popular Refcard JUnit and EasyMock. Outside of the daily grind, Michael enjoys spending time with his family as well as hobbies including woodworking, photography, and InfoSec.
Blog Posts by Michael Minella

Spring Cloud Task 1.1.0.RELEASE is now available

We are pleased to announce that Spring Cloud Task 1.1.0.RELEASE is now available via Github and the Pivotal download repository. Many thanks to all of those who contributed to this release.

Spring Cloud Task 1.1.0 offers the following features:

This is the generally available release (GA) for 1.1.0. This release addresses key enhancements to the project to allow for better coverage of operational concerns for tasks in a cloud environment. Features new to the 1.1.0 line include:

  • Updated error handling - 1.0.x stored stack traces that were the result of task executions within the TaskExecution#exitMessage field, requiring that this field perform double duty. First it was available for orchestration of tasks (similar to StepExecution#exitStatus in Spring Batch) as well as the storage of stack traces for debugging. In the 1.1.0 release, error messages have been moved to a new field TaskExecution#errorMessage so that each field has it’s own, dedicated use.

  • Updated customization options for partitioned batch jobs - In the 1.0.x line for Spring Cloud Task, when launching workers as tasks, there was not a way to customize the command line arguments provided to them. This is an issue in environments like CloudFoundry where you can use command line args to customize configuration without the need to re-push your app. In the new 1.1.0 release, we provide the ability to customize command line arguments via the CommandLineArgsProvider which is similar in functionality to the EnvironmentVariablesProvider introduced in 1.0.2.

  • External execution id persistence - When running a task in a cloud environment, there is typically a separate id associated with the infrastructure for the task’s execution. The id that YARN uses in the history server or the task id used by CloudFoundry are examples of these ids. Spring Cloud Task 1.1.0 now provides the ability to persist this external execution id for the ability to map one to the other.

  • Record the request of a task execution - When launching tasks on some form of infrastructure like Kubernetes or CloudFoundry, there can be a lag between the time the task execution is requested vs when it actually starts. Compounding this issue is the fact that if there is a problem with the platform, the task may not get launched at all. If this does occur, you’ll still want a record of the request. Spring Cloud Task 1.1.0 introduces the ability to record that a task is expected to start prior to it’s execution actually beginning. Allowing the launcher to record this request and the task itself will update it’s status accordingly.

  • Additional database support for the task repository - 1.1.0 introduces a community contributed schema to support DB2 as a datastore for the task repository.

Read more...

Spring Cloud Task 1.0.3.RELEASE and 1.1.0.M1 are now available

We are pleased to announce that Spring Cloud Task 1.0.3.RELEASE and 1.1.0.M1 are now available via Maven Central, Github and the Pivotal download repository. Many thanks to all of those who contributed to this release.

What’s new in Spring Cloud Task 1.0.3.RELEASE

1.0.3.RELEASE represents the next minor release for the 1.0.x branch. It’s a minor update that cleans up the dependency management within the project to be in alignment with how the rest of the Spring Cloud portfolio manages it’s dependencies.

Read more...

Spring Cloud Task 1.0.2.RELEASE is now available

We are pleased to announce that Spring Cloud Task 1.0.2.RELEASE is now available via Maven Central, Github and the Pivotal download repository. This release provides some minor enhancements including persisting of the completion of a task when terminated by an external signal. Many thanks to all of those who contributed to this release.

Spring Cloud Task Home | Source on GitHub | Reference Documentation

We look forward to your feedback in Github, StackOverflow, to me directly via Twitter @michaelminella or at SpringOnePlatform next week!

Read more...

Spring Cloud Task 1.0.1.RELEASE is now available

We are pleased to announce the release of Spring Cloud Task 1.0.1.RELEASE. This is the recommended GA release for Spring Cloud Task and is available from Maven Central as well as the usual other locations.

How did we get here?

Spring Cloud Task, is a step in an evolution of data applications in the Spring portfolio. As we announce this release, it may be helpful to look at how we got to this point.

It began with Spring Batch

Built upon the Spring portfolio, the evolution of this type of finite workload really began with Spring Batch. One of the main workload specific extensions of the Spring framework, Spring Batch provided functionality for performing finite amounts of processing in an enterprise friendly way. With multiple processing models (Tasklet vs Chunk) as well as scalability options that allowed for optimizing data processing both within a single JVM and using multiple JVMs. Spring Batch has served as the standard bearer of finite processing on the JVM for many years.

Read more...

Spring Cloud Task 1.0.0.RC1 is now available

We are pleased to announce the release of Spring Cloud Task 1.0.0.RC1. This is the first release candidate of the Spring Cloud Task project!

What’s New?

This release really represents the polishing of the functionality that existed within 1.0.0.M2:

  • The TaskRepository
  • Task listeners
  • Task integration with Spring Batch
  • Task integration with Spring Cloud Stream

There are a few minor breaking changes (renaming of a few methods) but those are all to get things right for our 1.0.0.GA. This release will serve as the baseline version of Spring Cloud Data Flow’s 1.0.0.RC1 as well.

Read more...

Spring Cloud Task 1.0.0.M2 is now available

We are pleased to announce the release of Spring Cloud Task 1.0.0.M2. This is the second milestone of the Spring Cloud Task project with some exciting new features!

What’s New?

With the M1 release of Spring Cloud Task, we introduced the concept of a task, the @EnableTask annotation, and the general concept of a microservice that has an end. We’ve been quite busy since then. Some of the highlights of what is new include:

  • Spring Cloud Task Listeners
  • Integration with Spring Cloud Stream
  • Integration with Spring Batch
  • More samples
Read more...

Spring Batch 3.0.7.RELEASE is now available

We are pleased to announce that Spring Batch 3.0.7.RELEASE is now available via Maven Central, Github and the Pivotal download repository. This is the 7th maintenance release for the 3.0.x branch of Spring Batch and addresses a number of minor bug fixes and enhancements. Most important of them, it addresses compatibility issues with the latest Spring Data release as well as adding updates to support the latest Hibernate releases. Many thanks to all of those who submitted the many pull requests that went into this release.

Read more...

Introducing Spring Cloud Task

Today we are pleased to introduce a new project in the Spring portfolio, Spring Cloud Task. Under the umbrella of the Spring Cloud grouping of projects and the sister project of Spring Cloud Stream, Spring Cloud Task aims to bring functionality required to support short lived microservices to Spring Boot based applications. With this blog post, we are releasing our first milestone of the project and are eager for your input and feedback.

The Goals of Spring Cloud Task

In most cases, the modern cloud environment is designed around the execution of processes that are not expected to end (think web applications or stream modules). If they do, it's considered a failure by the platform and they are typically restarted. While many platforms do have some method to execute a process that is expected to end (a batch job for example), the results of that execution are typically not maintained in a consumable way. Yet for mission critical applications, even though they are short lived, they still have the same non-functional requirements long lived processes have.

Read more...

Spring Batch 3.0.6.RELEASE is now available

We are pleased to announce that Spring Batch 3.0.6.RELEASE is now available via Maven Central, Github and the Pivotal download repository. This is the 6th maintenance release for the 3.0.x branch of Spring Batch and addresses a number of minor bug fixes and enhancements. Many thanks to all of those who submitted the many pull requests that went into this release.

Spring Batch Home | Source on GitHub | Reference Documentation

We look forward to your feedback in Jira, StackOverflow, or to me directly via Twitter @michaelminella.

Read more...

Spring Batch 3.0.5.RELEASE is now available

We are pleased to announce that Spring Batch 3.0.5.RELEASE is now available via Maven Central, Github and the Pivotal download repository. This is the 5th maintenance release for the 3.0.x branch of Spring Batch and addresses a number of minor enhancements as well as bringing Spring Batch fully compatible with Spring Framework 4.2. Many thanks to all of those who submitted the many pull requests that went into this release.

Spring Batch Home | Source on GitHub | Reference Documentation

We look forward to your feedback in Jira, StackOverflow, or to me directly via Twitter @michaelminella.

Read more...