Spring Integration 6.0.0-M5 and 5.5.15 Available

Dear Spring community,

I’d like to share with you an availability of the latest Milestone 5 of new Spring Integration 6.0 generation.

It can be obtained from Spring Milestone repository:

dependencyManagement {
    imports {
        mavenBom 'org.springframework.integration:spring-integration-bom:6.0.0-M5'

Also, Spring Integration 5.5.15 has been released with some critical bug fixed and upstream dependencies deprecation resolutions. It is recommended to upgrade if you have missed some intermediate releases before or just pull it transitively from upcoming Spring Boot 2.6.12 or 2.7.4!

With the whole Spring portfolio move to Java 17 and Jakarta EE, it was a tremendous internal framework refactoring to support new Java language level and jakarta namespace. Plus this includes an upgrade to the latest dependencies which are Jakarta EE compatible or have some breaking changes we couldn’t move to before.

The notable changes throughout the whole Spring Integration 6.0

  • Spring AOT support - a lot was reworked internally in the framework to satisfy native images expectations and some reflection, proxy and serialization hints are exposed.

  • GraphQL support - a new spring-integration-graphql module has been added. It is fully based on a new in portfolio Spring for GraphQL project and its GraphQlMessageHandler is a reactive implementation of the outbound gateway and can perform all query, mutation & subscription GraphQL operations.

  • The MQTT module now provides a ClientManager abstraction to allow to share the same MQTT client for different channel adapters.

  • The spring-integration-smb and spring-integration-hazelcast extensions have been migrated to the core project for better community visibility. We are planing to migrate more extensions to achieve a better developer experience and maintenance goals.

  • A PostgresSubscribableChannel has been introduced to rely on the native PostgreSQL push notifications feature. This way an interaction with a JdbcChannelMessageStore is not pollable, but rather a plain subscription where we pull a message from the DB whenever a notification happens from PostgreSQL.

  • Micrometer Observability - an ObservationRegistry instrumentation infrastructure has been added. The AbstractMessageHandler now emits a CONSUMER observations instead of just Timer when an ObservationRegistry is injected. An ObservationPropagationChannelInterceptor must be used on async and distributed message channels where we would like to propagate an Observation from the producer to consumer to continue a trace.

  • The IntegrationFlows factory is now deprecated in favor of the same functionality migrated directly to the IntegrationFlow interface.

  • The RMI module is completely removed in favor of other, more secure network protocols.

  • Apache Camel support - a new spring-integration-camel module has been added. Its CamelMessageHandler implementation is aimed for easier calls of Apache Camel routes from Spring Integration flows. It is based on a Camel’s ProducerTemplate and can perform InOnly, InOut and InOptionalOut exchanges carrying Spring Integration messages to/from Apache Camel routes.

  • All the messaging annotations (@ServiceActivator,@Transformer, @Splitter etc.) are now @Repeatable, so you can use the same POJO method in different integration flows.

  • The log() operator of the IntegrationFlow is now non-terminal - its ambiguity in the end of flow has been resolved and now the behavior of the flow remains the same if there was no log() operator.

  • The RedisLockRegistry can now work in pub-sub mode to mitigate a busy-spin concern whenever it is possible and lock can be obtained immediately on pub-sub notification.

Also, see a Migration Guide for breaking changes in the framework and its modules.

Give it a try before we go a release candidate in October and you are welcome with any feedback!

See you in person this December at SpringOne to discuss these and other Spring Integration features!


comments powered by Disqus