I have implemented a number of bug fixes and performance enhancements based on work done by Justin Ross:
1) separate receive queues for heartbeat indications (v2) - prevents false agent heartbeat timeouts due to non-heartbeat data indication messages hogging the receive queue under heavy traffic conditions.
2) enable windowing flow control - provides a more balanced processing across all receive queues (without it, one or more queues will starve for service when under heavy load).
3) dedicated broker thread for processing received qmf messages, rather than processing the qmf messages directly in the listener callback. Alleviates the need to call back into the session via the callback context, which improves performance.