Performance[MQB]: inline Put, Push, Ack, Confirm
Messages that have fixed destination (such as PUSH/ACK/Relay PUT/Relay CONFIRM) do not have to go on Cluster thread - it is a bottleneck. Instead, messages can go directly to mqbnet::Channel which enqueues them in thread-safe manner. This needs synchronization based on AtomicGate which allows thread-safe, efficient checking of the cluster status and thread-safe opening/closing and draining.
PUSH and ACK require statistics update which we move from Cluster to Queue. For this reason the opening queue context (OpenQueueConfirmationCookie) conveys statistics from Queue to Cluster
Hi @dorjesinpo, looking
@dorjesinpo thank you for fixes, added some comments in discussions and reassigned. You can assign this to @quarter-note later