Spring Integration 5.0 Milestone 6 Available
On behalf of the Spring Integration team I am pleased to announce that the Milestone 6 for the Spring Integration 5.0 version (5.0.0.M6
) is now available.
It is available for download from the Milestone Repository:
repositories {
maven { url 'http://repo.spring.io/libs-milestone' }
}
compile "org.springframework.integration:spring-integration-core:5.0.0.M6"
19 JIRAs (and some GitHub issues) made into this release, including bug fixes and a number of new features.
Some highlights of features in the M6
, since the previously announced Milestone 5:
-
The Spring WebFlux based Reactive Channel Adapters are provided for the HTTP server side:
@Bean public IntegrationFlow sseFlow() { return IntegrationFlows .from(Http.inboundReactiveGateway("/sse") .requestMapping(m -> m.produces(MediaType.TEXT_EVENT_STREAM_VALUE))) .handle((p, h) -> Flux.just("foo", "bar", "baz")) .get(); }
This sample demonstrate how we can configure Server Side Events with the Spring Integration Channel Adapter which is fully based on the WebFlux
foundation and performs integration flow execution on demand, back-pressure manner.
-
The
IntegrationFlow
can now start from any interface, even without@MessagingGateway
annotation. That annotation is synthesized on background with default properties by theAnnotationGatewayProxyFactoryBean
. This trick opens for us possibility to startIntegrationFlow
from thejava.util.function
interfaces -Function
,Consumer
andSupplier
. And that, in turn, gives us an interesting approach where we can expose anIntegrationFlow
as a Function using new Spring Cloud Function project:
@Bean public IntegrationFlow uppercase(MongoOperations mongoOperations) { return IntegrationFlows.from(Function.class) .handle(MongoDb.outboundGateway(mongoOperations) .queryFunction(msg -> Query.query(Criteria.where("name") .is(msg.getPayload()))) .collectionNameExpression("headers.collection") .expectSingleResult(true) .entityClass(Person.class)) .get(); }
-
a new
JdbcMetadataStore
is available now. This implementation is truly transaction-based and if subsequent flow after (S)FTP polling causes some error, no entries is stored in the DB because of transaction rollback. -
The
preserveTimestamp
algorithm for (S)FTP Inbound Channel Adapters has been fixed to throw an exception when local temporary copy cannot be renamed to the original file because the last one is busy in another process.
Special thanks to several community members for their ongoing active contributions to the framework; scan the commits and give them some kudos!
For a complete list of changes in 5.0
, also see the
What’s New chapter in the reference manual.
There are still several features (Reactive and Testing) we would like to include into the current version, so stay tuned for next Milestones!
We expect RC and subsequent GA somewhere in the end of October, beginning of November, - just before Spring Boot 2.0 GA
!
Any feedback, feature ideas, critics, bug reports and questions are welcome via appropriate communication channels:
Project Page | JIRA | Contributing | Help | Chat