In ServiceMixProducer.java we create a Channel for each exchange passed into process(). Under the covers this will cause a new thread pool to be created, as when you create a Channel that creates a new Executor instance, have a look in ServiceMixImpl.createChannel() in the NMR.
Instead this component should just create the Channel once and re-use it for subsequent exchanges.
Also ServiceMixProducer doesn't properly close the Channel it's creating which may lead to leaking resources.