The current prototype is here: https://github.com/olegz/spring-integration/tree/SerialDispatcher (SerialDispatcher branch)
Currently I didn't want to change any of the existing core code to either channels and/or dispatchers so I ended up providing implementations of SerialUnicastingDispatcher and SerialExecutorChannel. As you can gather from their names they are variations of UnicastingDispatcher and ExecutorChannel (with few enhancements)
Simple non-namespace based configuration shows its usage:
As you can see form above there are two groups of Messages that are sent in sporadic order. The come out in sequence and 2 groups are processed concurrently while individual Messages within the same group are processed serially.
Based on the current implementation this SerialUnicastingDispatcher is also a non-buffering re-sequencer. In other words it re-sequences Messages without storing them in the queue, therefore it does not require MessageStore