1. So in terms of servicemix 4, not really. The nmr is using a thread pool and an executor queue. Each channel gets its own executor (so this is just a straightThroughFlow). There is support for a pluggable flow but we don't have any other implementations yet.
2. I had a look in the code and there is a Flow interface, but we only provide a StraightThroughFlow implementation right now.
3. Yes, it uses a thread pool and for sendsync, waits on the thread for the provider to come back with the answer.
4. The NMR is not dealing with copying message properties, it just passes the message. The components/endpoints will deal with that.
5. So, assuming XA you would register a transaction manager in the osgi registry (install the transaction feature). Then you would configure the endpoints to be transactional in a similar manner to servicemix 3, but you would look up the transaction manager via Spring DM from the osgi registry rather than jndi. The transaction is conveyed from one endpoint to the next via the nmr (i.e. it essentially will just pass along the transactional context without touching it).