Gary Russell aaefe51909 GH-3003: Fix pub/sub with dynamic DSL flows
Fixes https://github.com/spring-projects/spring-integration/issues/3003

Statically defined flows with a publish/subscribe channel invoke the
subscriptions in natural (declared) order.

The components in the flow are started by the application context in
phases (consumers, then producers) and bean declaration order within
each phase.

When a dynamically declared flow is started, the components are started
by the `StandardIntegrationFlow` in reverse order (last to first) so that
we don't start producing messages before the flow is fully wired.

This has the side-effect that pub/sub subscribers are invoked in an
unnatural (last to first) order.

All subscription sub-flows start with a bridge from the pub/sub channel
to the first component's input channel.

The `BroadcastingDispatcher` honors the `Ordered` interface.

Change the `PublishSubscribeSpec` to set the `order` property so that
subscribers are always invoked in the natural order, regardless of whether
the flow is statically or dynamically defined.
2019-07-27 08:49:16 -04:00
2019-01-23 11:23:50 -05:00
2016-06-04 10:40:57 -04:00
2019-03-21 17:16:30 -04:00
2019-03-21 17:16:30 -04:00
2019-03-06 09:37:44 -05:00
2019-03-21 17:16:30 -04:00

Spring Integration Join the chat at https://gitter.im/spring-projects/spring-integration

Checking out and Building

To check out the project and build from source, do the following:

git clone git://github.com/spring-projects/spring-integration.git
cd spring-integration
./gradlew build

NOTE: While Spring Integration runs with Java SE 6 or higher, a Java 8 compiler is required to build the project.

If you encounter out of memory errors during the build, increase available heap and permgen for Gradle:

GRADLE_OPTS='-XX:MaxPermSize=1024m -Xmx1024m'

To build and install jars into your local Maven cache:

./gradlew install

To build api Javadoc (results will be in build/api):

./gradlew api

To build reference documentation (results will be in build/reference):

./gradlew reference

To build complete distribution including -dist, -docs, and -schema zip files (results will be in build/distributions)

./gradlew dist

Using Eclipse

To generate Eclipse metadata (.classpath and .project files), do the following:

./gradlew eclipse

Once complete, you may then import the projects into Eclipse as usual:

File -> Import -> Existing projects into workspace

Browse to the 'spring-integration' root directory. All projects should import free of errors.

Using IntelliJ IDEA

To generate IDEA metadata (.iml and .ipr files), do the following:

./gradlew idea

Resources

For more information, please visit the Spring Integration website at: https://projects.spring.io/spring-integration

Description
No description provided
Readme 83 MiB
Languages
Java 99%
XSLT 0.9%