You might want to post more info (i.e., config file etc.).
defaultOutput - does not affect how concurrency works.
What you might be confused about is how receive(..) method operates. It return the next available message (one at the time). So, even though your messages are processed concurrently you are retrieving them via receive(..) method one at the time.
What you can do is register subscribers (something like this):
Code:
@Component
public class MySubscriber {
@Subscriber(channel="reply")
public void foo(Object o) {
// your code
}
}
This way subscription manager will process your output per thread.