The synchronized block in this method seems to affect the performance of the VM transport as it restricts throughput. Given that there is already a comment in the code about whether the synchronized block is needed I think this it's worth investigating this a bit further.
public void onEvent(UMOEvent event) throws UMOException
{
/*
- TODO HH: review: onEvent can only be called by the VMMessageDispatcher - why is
- this lock here and do we still need it? what can break if this receiver is run
- concurrently by multiple dispatchers?
*/
UMOMessage msg = new MuleMessage(event.getTransformedMessage(), event.getMessage());
synchronized (lock) { routeMessage(msg); }
}