First, Service Bus has nice API and rich feature set (especially, scheduled messages).
But, IMHO, it has some performance issues with synchronous message sending/receiving.
I can send about 560 msg/sec short (every message has text i.ToString() where i is counter from 1 to 200K) using 8 threads. Every thread has its MessageSender created from thread's MessagingFactory (8 MessagingFactory total).
After I increase thread count to 80 I get a little larger message rate: 640 msg/sec
When I send async messages using SendAsync I achive raw (only SendAsync, without task completion) message sending rate about 80K msg/sec. Real (average speed after all SendAsync tasks complete) speed is about 12K msg/sec.
But there is large memory consumption for async scenario: about 800 MB for 200K messages.
For sync scenario memory consumption is about 90 MB for 200K messages.
Is there any way to improve synchronous send/receive performance. What is main factor (factors) that restricts synchronous send rate?
For example, I could synchronously send about 20K msg/sec using RabbitMQ (on same computer)...