News and Events

Spring Integration 4.3 M2 is Available

I am pleased to announce that Spring Integration 4.3.0.M2 is now available from the Spring milestone repository. This release closes about 50 JIRAs and includes almost a 100 commits.

Thanks to everyone who has contributed. Especially to the Spring Cloud Stream team, whose comprehensive Spring Integration usage influences the project direction.

Some key feature since the First Milestone:

  • The Spring Integration runtime object model, together with Component Metrics, now can be exposed as a graph, which may be used to visualize the current state of the integration application. When running in a web container, the @EnableIntegrationGraphController annotation, together with an IntegrationGraphServer bean, creates a service to retrieve the model and state over the REST protocol, e.g. in JSON notation:

      "nodes": [
      "nodeId": 1,
      "name": "nullChannel",
      "componentType": "channel",
      "nodeId": 2,
      "name": "errorChannel",
      "componentType": "publish-subscribe-channel",
      "nodeId": 3,
      "name": "_org.springframework.integration.errorLogger",
      "componentType": "logging-channel-adapter",
      "output": null,
      "input": "errorChannel"
      "links": [
      "from": 2,
      "to": 3
    Continuing the tradition of Spring Integration, message channels are represented as first class citizens (nodes) in this model, and are not simply links between nodes. Also, when statistics are enabled (@EnableIntegrationManagement or <int:management />), each node in the object graph contains those statistics (message counts, response times etc).

  • Persistent MessageStores now support a Lazy-Load algorithm (enabled by default) for MessageGroup retrieval. When dealing with large, persisted, groups with operations such as aggregation, this produces significant performance benefits.

  • The Service Activator now supports an async option. If the service returns a ListenableFuture<?> and async is true, the calling thread is released immediately, and the reply message is sent on the thread (from within your service) that completes the future. Based on this foundation we also provide an AsyncAmqpOutboundGateway and async mode for the JmsOutboundGateway where the downstream flow runs on the reply listener container thread.

  • The XMPP Adapters now support Extensions (XEP). So, for example, you can more easily interact with Google Cloud Messaging (GCM):

<int-xmpp:inbound-channel-adapter id="xmppInboundAdapter"
<bean id="gcmExtensionProvider" class="org.jivesoftware.smackx.gcm.provider.GcmExtensionProvider"/>

<int-xmpp:outbound-channel-adapter id="xmppOutboundAdapter"
  • Groovy scripts can now be configured with the compile-static or compiler-configuration to achieve improved performance or provide some exotic customization to the target AST.

  • The WatchServiceDirectoryScanner has undergone several improvements. Its logic has been moved to the FileReadingMessageSource directly via the use-watch-service flag. In addition, we can specify the WatchEventTypes to listen for on the directory tree. Also the StandardWatchEventKinds.ENTRY_DELETE event is treated as a ResettableFileListFilter.remove() operation, for example to remove a file from an AcceptOnceFilteListFilter.

  • Several more cases for channel late binding have been implemented. For example in the was WireTap, which led to the
    MessageChannelSpec.wireTap() feature in the Spring Integration Java DSL.

See What’s New and the JIRA release notes for complete information about the included changes.

We expect to release the final release candidate in mid-May with the release being due at the end of May.

So now is your last opportunity to request any favorite feature you feel is missing from the framework. Next up (2017) is 5.0 which will require Java 8.

We welcome any feedback, questions, or help, using the usual mechanisms:

Project Page | JIRA | Contribution | Help

If you happen to join the Spring I/O conference this May in Barcelona, don’t miss Gary Russel’s talk about Spring Integration with Spring Boot. Also, the registration for SpringOne Platform (early August, Las Vegas) has opened recently, in case you want to benefit from early bird ticket pricing. You will be able to meet Gary and me there to discuss about something new in Spring Integration!

comments powered by Disqus