I have benchmark which make async sends and async receives.
First, I send 500000 short messages to queue. To not overload service bus with too many concurrent async requests I limit concurrent request number with help of Semaphore class (sender waits for semaphore before SendAsync and releases semaphore after SendAsync completes). After every 1000th SendAsync task completes I log (to memory) sent message count and time elapsed after 1st SendAsync started. When I set semaphore's initialCount and maximumCount to 1500 then sender freezes (for 3-4 seconds) every 100000 messages.
After all messages sent I start receiver. It has semaphore with 1000,1000 and prefetchCount=500. Receiver works in PeekAndLock mode. I call ReceiveAsync and after task completes I call CompleteAsync. After every 1000th CompleteAsync task completes I log (to memory) completed message count and time elapsed after 1st ReceiveAsync started. Receiver also freezes (3-4 sec) every 100000 messages.