Mark Fisher

Mark Fisher

Functions as a Service tech lead, Spring Integration founder

Cambridge, MA

Mark has been a member of the Spring team for over a decade, contributing to the Spring Framework and several other projects. He founded Spring Integration in 2007 and is one of the authors of Spring Integration in Action, published by Manning in 2012. He contributes to Spring Cloud Stream, Spring Cloud Data Flow and Spring Cloud Function and is currently focused on Serverless and Functions as a Service.
Blog Posts by Mark Fisher

Introducing Spring Cloud Function

Spring Cloud Function is a new project with the following high-level goals:

  • Promote the implementation of business logic via functions.
  • Decouple the development lifecycle of business logic from any specific runtime target so that the same code can run as a web endpoint, a stream processor, or a task.
  • Support a uniform programming model across serverless providers, as well as the ability to run standalone (locally or in a PaaS).
  • Enable Spring Boot features (auto-configuration, dependency injection, metrics) on serverless providers.

Spring Cloud Data Flow 1.0.0 M3 Released

On behalf of the team, I am pleased to announce the 1.0.0.M3 release of Spring Cloud Data Flow.

Over the last few months, we have added exciting new features and improvements to the overall orchestration of data microservices on a variety of platforms. We have also made some changes that significantly benefit developers, such as exposing Spring Boot Starters for all of the stream and task applications we publish. Following are some of the highlights from this release:

  • Provides the foundation for the following Data Flow Server implementations that have also been released today:
  • Introduces and builds upon the Spring Cloud Deployer Service Provider Interface
    • New multi-platform application deployment model factored out of Spring Cloud Data Flow itself for general purpose use, including AppDeployer and TaskLauncher to deploy long-running and short-lived microservices, respectively.
    • Improved application resolution strategy with support for maintaining a registry of applications as http, file, maven, docker, or hdfs artifacts
  • Builds upon Spring Cloud Stream 1.0.0.RC3
  • Builds upon Spring Cloud Task 1.0.0.M2
  • Improves DSL support for streaming and batch pipelines
  • Adds "tap" support for streaming and batch pipelines
  • Applications
    • Supports out-of-the-box stream applications built from the new Stream Application Starters project (auto-generated apps for both Kafka and RabbitMQ binders)
    • Supports out-of-the-box task applications built from the new Task Application Starters project
    • Adds several new out-of-the-box stream and task applications
    • Improves custom application registration mechanics from the Shell and Dashboard
  • Dashboard
    • New and improved Dashboard
    • Adds Batch and Task support
    • Adds "Apps" tab to monitor and manage out-of-the-box and custom applications
  • Flo for Spring Cloud Data Flow
    • Modern look and feel with several UX improvements around the palette, auto-layouts, auto-linking, canvas, nodes, node connectors, and many more
    • Adds support for a scriptable-transform processor that accepts ruby, groovy, python, or javascript code for runtime compute logic
    • Adds visual distinction between primary and tap’d pipelines
    • Adapts to Angular style tooltips
    • Graph layout optimizations
  • Improved IT and TCK tests
  • Adds new samples
  • Adds new logo

Introducing Spring XD

Today we are officially kicking off a new initiative called Spring XD whose theme is “tackling Big Data complexity”1.

The Spring Data team has been incredibly busy over the past few years, not only providing support for NoSQL datastores but also simplifying the development experience with Hadoop. With the creation of the Spring for Apache Hadoop project, we made it easier to get started developing Hadoop applications by providing a rich configuration model and a consistent programming model across Hadoop ecosystem projects such as Hive and Pig. As Spring users would expect, one can:


Spring Integration 2.2.0 GA has been released

We are pleased to announce that Spring Integration 2.2 is now GA.

The artifacts are available in the SpringSource Repository as well as Maven Central, or you can download the zip here.

For a big picture view, please read the “what’s new” section of the reference manual.

For more detail on some of the main additions, refer to the following blog series:

Part 1: MongoDB Adapters
Part 2: Transaction Synchronization
Part 3: JPA Support
Part 4: Retry and More


Spring Integration 2.1 is now GA

Spring Integration 2.1 has been released! You can download it here or configure your Maven POM. This version is the result of more than one full year of work, and the team has resolved hundreds of issues since Spring Integration 2.0 was released. Interestingly, it has been 4 years and a few days since the very first public release of Spring Integration (0.5, released on Jan 3rd 2008). In this post, I simply want to provide a quick overview of the main new features of 2.1.

RabbitMQ/AMQP support

In the ‘spring-integration-amqp’ module, we have Channel Adapters for one-way messaging as well as Gateways for request/reply. The adapters and gateways can be used for inbound and/or outbound integration with a RabbitMQ broker. We also have AMQP-backed Message Channel implementations - both point-to-point and publish/subscribe - that can be used anywhere in the middle of a flow. For more information, see this section of the reference manual.


Spring Integration 2.1 Release Candidate 1 is now available

We are pleased to announce that Spring Integration 2.1 Release Candidate 1 is now available.
Release Notes | Documentation | Download

If you would like to grab the artifacts via Maven, please use the following repository and dependency configuration (and replace ‘core’ with any other modules you want to use, e.g. ‘amqp’, ‘gemfire’, ‘http’):

    <name>Spring Framework Maven Milestone Repository</name>


Spring AMQP 1.0 GA released

We are pleased to announce that Spring AMQP 1.0 GA (for Java) has been released! You can find links to all of the resources (documentation, samples, source code, forum, issue tracker, etc) at the Spring AMQP Home Page. The artifacts are available in the SpringSource Maven repository as well as Maven Central.

This project has been extremely popular during its milestone and release-candidate phases, and we would like to thank those of you in the community who have provided valuable feedback and raised JIRA issues along the way. We are looking forward to watching the community grow even more now that we have a GA release.


Chatting in the Cloud: Part 1

Last week the availability of RabbitMQ as a service on Cloud Foundry was announced. Any application running on Cloud Foundry may now send and receive messages via a RabbitMQ broker that can be provisioned as a service with a single command (e.g. ‘vmc create-service rabbitmq’). Instances of the messaging service may be shared between applications, and since RabbitMQ is a protocol-based broker, those applications may even be written in different languages. So, this is an exciting announcement for those interested in modular, polyglot, event-driven applications running in the cloud. I will be posting a series of blogs that focus on those types of applications. In this post, I am going to keep things simple and focus on the initial experience for Spring developers.


Cloud Foundry for Spring Developers

By now, many of you have probably seen the Cloud Foundry webinar and Rod’s blog from earlier today. I’d like to provide a quick follow-up that features a “hello-spring” sample application deployed in the cloud. Thanks to Cloud Foundry, there’s practically no learning curve at all.

Before we get started, let’s consider three goals that have driven Spring from day one:

  1. focus on simplicity and productivity to make developers lives easier

  2. support innovative technologies in a consistent way

  3. ensure portability of applications across deployment environments


Maven Configuration for Spring Integration


Add the following within the <dependencies> section of your POM:


That will make the “spring-integration-core” module available to your project (the “core” includes the Messaging API and Enterprise Integration Patterns support). If you want to use any of the adapters or support for XML, Groovy, and/or Spring Security, you can instead add one or more of the following as the “artifactId” value: