JIRA: https://jira.spring.io/browse/INT-3418 * Create 4.1 XSD * Clean up Docs for 4.1 * Prepare WebSocket module * Add Reactor dependency * Remove Eclipse and SNV artifacts Phase #1: prepare Conflicts: gradle.properties
377 lines
18 KiB
XML
377 lines
18 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
|
<section xmlns="http://docbook.org/ns/docbook" version="5.0" xml:id="migration-3.0-4.0"
|
|
xmlns:xlink="http://www.w3.org/1999/xlink">
|
|
<title>Changes between 3.0 and 4.0</title>
|
|
<para>
|
|
Please be sure to also see the
|
|
<ulink url="https://github.com/spring-projects/spring-integration/wiki/Spring-Integration-3.0-to-4.0-Migration-Guide"
|
|
>Migration Guide</ulink> for important changes that might affect your applications.
|
|
Migration guides for all versions back to <emphasis>2.1</emphasis> can be found on the
|
|
<ulink url="https://github.com/spring-projects/spring-integration/wiki">Wiki</ulink>.
|
|
</para>
|
|
<section id="4.0-new-components">
|
|
<title>New Components</title>
|
|
<section id="4.0-mqtt">
|
|
<title>MQTT Channel Adapters</title>
|
|
<para>
|
|
The MQTT channel adapters (previously available in the Spring Integration Extensions repository)
|
|
are now available as part of the normal Spring Integration distribution.
|
|
See <xref linkend="mqtt"/>
|
|
</para>
|
|
</section>
|
|
<section id="4.0-enable-configuration">
|
|
<title>@EnableIntegration</title>
|
|
<para>
|
|
The <code>@EnableIntegration</code> annotation has been added, to permit declaration of
|
|
standard Spring Integration beans when using <code>@Configuration</code> classes.
|
|
See <xref linkend="enable-integration"/> for more information.
|
|
</para>
|
|
</section>
|
|
<section id="4.0-component-scan">
|
|
<title>@IntegrationComponentScan</title>
|
|
<para>
|
|
The <code>@IntegrationComponentScan</code> annotation has been added, to permit classpath
|
|
scanning for Spring Integration specific components.
|
|
See <xref linkend="enable-integration"/> for more information.
|
|
</para>
|
|
</section>
|
|
<section id="4.0-message-history">
|
|
<title>@EnableMessageHistory</title>
|
|
<para>
|
|
Message history can now be enabled with the <code>@EnableMessageHistory</code> annotation in a
|
|
<code>@Configuration</code> class; in addition the message history settings can be modified
|
|
by a JMX MBean. In addition auto-created <interfacename>MessageHandler</interfacename>s for
|
|
annotated endpoints (e.g. <classname>@ServiceActivator</classname>, <classname>@Splitter</classname> etc.)
|
|
now are also trackable by <code>MessageHistory</code>. For more information, see <xref linkend="message-history"/>.
|
|
</para>
|
|
</section>
|
|
<section id="4.0-messaging-gateway">
|
|
<title>@MessagingGateway</title>
|
|
<para>
|
|
Messaging gateway interfaces can now be configured with the <code>@MessagingGateway</code> annotation.
|
|
It is an analogue of the <code><int:gateway/></code> xml element.
|
|
For more information, see <xref linkend="messaging-gateway-annotation"/>.
|
|
</para>
|
|
</section>
|
|
<section id="4.0-boot">
|
|
<title>Spring Boot @EnableAutoConfiguration</title>
|
|
<para>
|
|
As well as the <code>@EnableIntegration</code> annotation mentioned above, a
|
|
a hook has been introduced to allow the
|
|
Spring Integration infrastructure beans to be configured using Spring Boot's
|
|
<code>@EnableAutoConfiguration</code>.
|
|
For more information see
|
|
<ulink url="http://docs.spring.io/spring-boot/docs/current/reference/html/using-boot-auto-configuration.html"
|
|
>Spring Boot - AutoConfigure</ulink>.
|
|
</para>
|
|
</section>
|
|
<section id="4.0-global-channel-interceptor">
|
|
<title>@GlobalChannelInterceptor</title>
|
|
<para>
|
|
As well as the <code>@EnableIntegration</code> annotation mentioned above,
|
|
the <code>@GlobalChannelInterceptor</code> annotation has bean introduced.
|
|
For more information, see <xref linkend="enable-integration"/>.
|
|
</para>
|
|
</section>
|
|
<section id="4.0-integration-converter">
|
|
<title>@IntegrationConverter</title>
|
|
<para>
|
|
The <code>@IntegrationConverter</code> annotation has bean introduced,
|
|
as an analogue of <code><int:converter/></code> component.
|
|
For more information, see <xref linkend="enable-integration"/>.
|
|
</para>
|
|
</section>
|
|
<section id="4.0-enable-publisher">
|
|
<title>@EnablePublisher</title>
|
|
<para>
|
|
The <code>@EnablePublisher</code> annotation has been added, to allow the specification of a
|
|
<code>default-publisher-channel</code> for <classname>@Publisher</classname> annotations.
|
|
See <xref linkend="enable-integration"/> for more information.
|
|
</para>
|
|
</section>
|
|
<section id="4.0-redis-cms">
|
|
<title>Redis Channel Message Stores</title>
|
|
<para>
|
|
A new Redis <interfacename>MessageGroupStore</interfacename>, that is optimized for
|
|
use when backing a <classname>QueueChannel</classname> for persistence, is now
|
|
provided.
|
|
For more information, see <xref linkend="redis-cms"/>.
|
|
</para>
|
|
<para>
|
|
A new Redis <interfacename>ChannelPriorityMessageStore</interfacename> is now
|
|
provided. This can be used to retrieve messages by priority.
|
|
For more information, see <xref linkend="redis-cms"/>.
|
|
</para>
|
|
</section>
|
|
<section id="4.0-priority-channel-mondodb">
|
|
<title>MongodDB Channel Message Store</title>
|
|
<para>
|
|
MongoDB support now provides the <classname>MongoDbChannelMessageStore</classname> -
|
|
a <emphasis>channel</emphasis> specific <interfacename>MessageStore</interfacename> implementation.
|
|
With <code>priorityEnabled = true</code>, it can be used in
|
|
<code><int:priority-queue></code>s to achieve <emphasis>priority</emphasis> order polling of
|
|
persisted messages. For more information see <xref linkend="mongodb-priority-channel-message-store"/>.
|
|
</para>
|
|
</section>
|
|
<section id="4.0-MBeanExport-annotation">
|
|
<title>@EnableIntegrationMBeanExport</title>
|
|
<para>
|
|
The <classname>IntegrationMBeanExporter</classname> can now be enabled with the <code>@EnableIntegrationMBeanExport</code>
|
|
annotation in a <code>@Configuration</code> class. For more information, see <xref linkend="jmx-mbean-exporter"/>.
|
|
</para>
|
|
</section>
|
|
<section id="4.0-channel-security-interceptor">
|
|
<title>ChannelSecurityInterceptorFactoryBean</title>
|
|
<para>
|
|
Configuration of Spring Security for message channels using <code>@Configuration</code> classes is
|
|
now supported by using a <classname>ChannelSecurityInterceptorFactoryBean</classname>.
|
|
For more information, see <xref linkend="security"/>.
|
|
</para>
|
|
</section>
|
|
<section id="4.0-redis-outbound-gateway">
|
|
<title>Redis Command Gateway</title>
|
|
<para>
|
|
The Redis support now provides the <code><outbound-gateway></code> component
|
|
to perform generic Redis commands using the <code>RedisConnection#execute</code> method.
|
|
For more information, see <xref linkend="redis-outbound-gateway"/>.
|
|
</para>
|
|
</section>
|
|
<section id="4.0-redis-gemfire-lock-registry">
|
|
<title>RedisLockRegistry and GemfireLockRegistry</title>
|
|
<para>
|
|
The <classname>RedisLockRegistry</classname> and <classname>GemfireLockRegistry</classname> are now
|
|
available supporting global locks visible to multiple application instances/servers.
|
|
These can be used with aggregating message handlers across multiple application instances such
|
|
that group release will occur on only one instance.
|
|
For more information, see <xref linkend="redis-lock-registry"/>, <xref linkend="gemfire-lock-registry"/>
|
|
and <xref linkend="aggregator"/>.
|
|
</para>
|
|
</section>
|
|
<section id="4.0-poller-annotation">
|
|
<title>@Poller</title>
|
|
<para>
|
|
Annotation-based messaging configuration can now have a <code>poller</code> attribute.
|
|
This means that methods annotated with (<interfacename>@ServiceActivator</interfacename>,
|
|
<interfacename>@Aggregator</interfacename> etc.) can now use an <code>inputChannel</code> that
|
|
is a reference to a <interfacename>PollableChannel</interfacename>.
|
|
For more information, see <xref linkend="annotations"/>.
|
|
</para>
|
|
</section>
|
|
<section id="4.0-inbound-channel-adapter-annotation">
|
|
<title>@InboundChannelAdapter and SmartLifecycle for Annotated Endpoints</title>
|
|
<para>
|
|
The <interfacename>@InboundChannelAdapter</interfacename> method annotation is now available.
|
|
It is an analogue of the <code><int:inbound-channel-adapter></code> XML component.
|
|
In addition, all Messaging Annotations now provide <interfacename>SmartLifecycle</interfacename> options.
|
|
For more information, see <xref linkend="annotations"/>.
|
|
</para>
|
|
</section>
|
|
<section id="4.0-twitter-sog">
|
|
<title>Twitter Search Outbound Gateway</title>
|
|
<para>
|
|
A new twitter endpoint <classname><int-twitter-search-outbound-gateway/></classname>
|
|
has been added. Unlike the search inbound adapter which polls using the same search
|
|
query each time, the outbound gateway allows on-demand customized queries.
|
|
For more information, see <xref linkend="twitter-sog"/>.
|
|
</para>
|
|
</section>
|
|
<section id="4.0-gemfire-metadata">
|
|
<title>Gemfire Metadata Store</title>
|
|
<para>
|
|
The <classname>GemfireMetadataStore</classname> is provided, allowing it to be used, for example,
|
|
in a <classname>AbstractPersistentAcceptOnceFileListFilter</classname>
|
|
implementation in a multiple application instance/server environment.
|
|
For more information, see <xref linkend="metadata-store"/>,
|
|
<xref linkend="file-reading"/>, <xref linkend="ftp-inbound"/> and
|
|
<xref linkend="sftp-inbound"/>.
|
|
</para>
|
|
</section>
|
|
<section id="4.0-bridge-annotations">
|
|
<title>@BridgeFrom and @BridgeTo Annotations</title>
|
|
<para>
|
|
Annotation and Java configuration has introduced <classname>@BridgeFrom</classname> and
|
|
<classname>@BridgeTo</classname> <classname>@Bean</classname> method annotations to mark
|
|
<interfacename>MessageChannel</interfacename> beans in
|
|
<interfacename>@Configuration</interfacename> classes.
|
|
For more information, see <xref linkend="annotations"/>.
|
|
</para>
|
|
</section>
|
|
<section id="4.0-meta-messaging-annotations">
|
|
<title>Meta Messaging Annotations</title>
|
|
<para>
|
|
Messaging Annotations (<classname>@ServiceActivator</classname>, <classname>@Router</classname>,
|
|
<classname>@MessagingGateway</classname> etc.) can now be configured as meta-annotations for user-defined
|
|
Messaging Annotations. In addition the user-defined annotations can have the same attributes
|
|
(<code>inputChannel</code>, <code>@Poller</code>, <code>autoStartup</code> etc.).
|
|
For more information, see <xref linkend="annotations"/>.
|
|
</para>
|
|
</section>
|
|
</section>
|
|
|
|
<section id="4.0-general">
|
|
<title>General Changes</title>
|
|
<section>
|
|
<title>Requires Spring Framework 4.0</title>
|
|
<para>
|
|
Core messaging abstractions (<interfacename>Message</interfacename>,
|
|
<interfacename>MessageChannel</interfacename> etc) have moved to the Spring
|
|
Framework <code>spring-messaging</code> module. Users who reference these
|
|
classes directly in their code will need to make changes as described in
|
|
the first section of the
|
|
<ulink url="https://github.com/spring-projects/spring-integration/wiki/Spring-Integration-3.0-to-4.0-Migration-Guide"
|
|
>Migration Guide</ulink>.
|
|
</para>
|
|
</section>
|
|
<section id="4.0-xpath-header-enricher-header-type">
|
|
<title>Header Type for XPath Header Enricher</title>
|
|
<para>
|
|
The <code>header-type</code> attribute has been introduced for the <code>header</code> sub-element of the
|
|
<code><int-xml:xpath-header-enricher></code>. This attribute provides the target type for
|
|
the header value to which the result of the XPath expression evaluation will be converted.
|
|
For more information see <xref linkend="xml-xpath-header-enricher"/>.
|
|
</para>
|
|
</section>
|
|
<section id="4.0-object-to-json-transformer-result-type">
|
|
<title>Object To Json Transformer: Node Result</title>
|
|
<para>
|
|
The <code>result-type</code> attribute has been introduced for the <code><int:object-to-json-transformer></code>.
|
|
This attribute provides the target type for the result of object mapping to JSON.
|
|
It supports <code>STRING</code> (default) and <code>NODE</code>.
|
|
For more information see <xref linkend="transformer-xpath-spel-function"/>.
|
|
</para>
|
|
</section>
|
|
<section id="4.0-jms-header-mapping">
|
|
<title>JMS Header Mapping</title>
|
|
<para>
|
|
The <classname>DefaultJmsHeaderMapper</classname> now maps an incoming <code>JMSPriority</code> header to
|
|
the Spring Integration <code>priority</code> header. Previously <code>priority</code> was only
|
|
considered for outbound messages. For more information see <xref linkend="jms-header-mapping"/>.
|
|
</para>
|
|
</section>
|
|
<section id="4.0-jms-ob">
|
|
<title>JMS Outbound Channel Adapter</title>
|
|
<para>
|
|
The JMS outbound channel adapter now supports the <code>session-transacted</code> attribute
|
|
(default false). Previously, you had to inject a customized <classname>JmsTemplate</classname>
|
|
to use transactions. See <xref linkend="jms-outbound-channel-adapter"/>.
|
|
</para>
|
|
</section>
|
|
<section id="4.0-jms-ib">
|
|
<title>JMS Inbound Channel Adapter</title>
|
|
<para>
|
|
The JMS inbound channel adapter now supports the <code>session-transacted</code> attribute
|
|
(default false). Previously, you had to inject a customized <classname>JmsTemplate</classname>
|
|
to use transactions (the adapter allowed 'transacted' in the acknowledgeMode which was
|
|
incorrect, and didn't work; this value is no longer allowed). See
|
|
<xref linkend="jms-inbound-channel-adapter"/>.
|
|
</para>
|
|
</section>
|
|
<section id="4.0-datatype-channel">
|
|
<title>Datatype Channels</title>
|
|
<para>
|
|
You can now specify a <interfacename>MessageConverter</interfacename> to be used when converting
|
|
(if necessary) payloads to one of the accepted <code>datatype</code>s in a Datatype channel.
|
|
For more information see <xref linkend="channel-datatype-channel"/>.
|
|
</para>
|
|
</section>
|
|
<section id="4.0-retry-config">
|
|
<title>Simpler Retry Advice Configuration</title>
|
|
<para>
|
|
Simplified namespace support has been added to configure a
|
|
<classname>RequestHandlerRetryAdvice</classname>.
|
|
For more information see <xref linkend="retry-config"/>.
|
|
</para>
|
|
</section>
|
|
<section id="4.0-release-strategy-group-timeout">
|
|
<title>Correlation Endpoint: Time-based Release Strategy</title>
|
|
<para>
|
|
The mutually exclusive <code>group-timeout</code> and <code>group-timeout-expression</code>
|
|
attributes have been added to the <code><int:aggregator></code> and <code><int:resequencer></code>.
|
|
These attributes allow forced completion of a partial <code>MessageGroup</code>,
|
|
if the <interfacename>ReleaseStrategy</interfacename> does not release a group and no
|
|
further messages arrive within the time specified.
|
|
For more information see <xref linkend="aggregator-config"/>.
|
|
</para>
|
|
</section>
|
|
<section id="4.0-redis-metadata">
|
|
<title>Redis Metadata Store</title>
|
|
<para>
|
|
The <classname>RedisMetadataStore</classname> now implements <interfacename
|
|
>ConcurrentMetadataStore</interfacename>, allowing it to be used, for example,
|
|
in a <classname>AbstractPersistentAcceptOnceFileListFilter</classname>
|
|
implementation in a multiple application instance/server environment.
|
|
For more information, see <xref linkend="redis-metadata-store"/>,
|
|
<xref linkend="file-reading"/>, <xref linkend="ftp-inbound"/> and
|
|
<xref linkend="sftp-inbound"/>.
|
|
</para>
|
|
</section>
|
|
<section id="4.0-jdbc-cs">
|
|
<title>JdbcChannelMessageStore and PriorityChannel</title>
|
|
<para>
|
|
The <classname>JdbcChannelMessageStore</classname> now implements
|
|
<interfacename>PriorityCapableChannelMessageStore</interfacename>, allowing it to be used as
|
|
a <code>message-store</code> reference for <code>priority-queue</code>s.
|
|
For more information, see <xref linkend="jdbc-message-store-channels"/>.
|
|
</para>
|
|
</section>
|
|
<section id="4.0-amqp">
|
|
<title>AMQP Endpoints Delivery Mode</title>
|
|
<para>
|
|
Spring AMQP, by default, creates persistent messages on the broker. This behavior can be
|
|
overridden by setting the <code>amqp_deliveryMode</code> header and/or customizing the
|
|
mappers. A convenient <code>default-delivery-mode</code> attribute has now been added
|
|
to the adapters to provide easier configuration of this important setting.
|
|
For more information, see <xref linkend="amqp-outbound-channel-adapter"/> and
|
|
<xref linkend="amqp-outbound-gateway"/>.
|
|
</para>
|
|
</section>
|
|
<section id="4.0-ftp">
|
|
<title>FTP Timeouts</title>
|
|
<para>
|
|
The <classname>DefaultFtpSessionFactory</classname> now exposes the
|
|
<code>connectTimeout</code>, <code>defaultTimeout</code> and <code>dataTimeout</code>
|
|
properties, avoiding the need to subclass the factory just to set these common
|
|
properties. The <code>postProcess*</code> methods are still available for more
|
|
advanced configuration. See <xref linkend="ftp-session-factory"/> for more information.
|
|
</para>
|
|
</section>
|
|
<section id="4.0-twitter-status-updating">
|
|
<title>Twitter: StatusUpdatingMessageHandler</title>
|
|
<para>
|
|
The <classname>StatusUpdatingMessageHandler</classname> (<code><int-twitter:outbound-channel-adapter></code>)
|
|
now supports the <code>tweet-data-expression</code> attribute to build a
|
|
<classname>org.springframework.social.twitter.api.TweetData</classname> object for updating the
|
|
timeline status allowing, for example, attaching an image.
|
|
See <xref linkend="outbound-twitter-update"/> for more information.
|
|
</para>
|
|
</section>
|
|
<section id="4.0-jpa-id-expression">
|
|
<title>JPA Retrieving Gateway: id-expression</title>
|
|
<para>
|
|
The <code>id-expression</code> attribute has been introduced for
|
|
<code><int-jpa:retrieving-outbound-gateway></code> to perform
|
|
<code>EntityManager.find(Class entityClass, Object primaryKey)</code>.
|
|
See <xref linkend="jpa-retrieving-outbound-gateway"/> for more information.
|
|
</para>
|
|
</section>
|
|
<section id="4.0-tcp-deserializer-events">
|
|
<title>TCP Deserialization Events</title>
|
|
<para>
|
|
When one of the standard deserializers encounters a problem decoding the input stream to
|
|
a message, it will now emit a <classname>TcpDeserializationExceptionEvent</classname>, allowing
|
|
applications to examine the data at the point the exception occurred.
|
|
See <xref linkend="tcp-events"/> for more information.
|
|
</para>
|
|
</section>
|
|
<section id="4.0-bean-messaging-annotations">
|
|
<title>Messaging Annotations on @Bean Definitions</title>
|
|
<para>
|
|
Messaging Annotations (<classname>@ServiceActivator</classname>, <classname>@Router</classname>,
|
|
<classname>@InboundChannelAdapter</classname> etc.) can now be configured on <classname>@Bean</classname>
|
|
definitions in <interfacename>@Configuration</interfacename> classes.
|
|
For more information, see <xref linkend="annotations"/>.
|
|
</para>
|
|
</section>
|
|
</section>
|
|
</section>
|