Adaptive Middleware for Message Queuing Systems