JIRA: https://jira.spring.io/browse/INT-3433` If a read fails due to insufficient threads, delay the read for (default 100ms) - do not re-enable OP_READ until that time has elapsed. Avoids spinning the CPU. INT-3433 More Polishing If the assembler couldn't execute a new assembler after assembling the current message (when it detected there is more data), in the finally block it would "continue" only if the socket was still open. The test case closes the socket after sending 4 messages so when this condition occurred, the assembler failed to continue and data was left in the buffer. Remove the `isOpen()` check in the finally block and always continue if there's not another assembler running and there's data available. INT-3433 More Polishing We can still get starvation if the selector is in a long wait (in select()) when a read is delayed. Whenever a read is delayed, wake the selector so its next select will use the readDelay timeout. INT-3433 Reference Docs Also remove Thread.yield(). Revert redundant boolean return from `TcpNioConnection#checkForAssembler()`
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
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: http://projects.spring.io/spring-integration