static async Task BenchmarkRpc(IBusControl bus) { await using var clientFactory = await bus.CreateReplyToClientFactory(); IRequestClient <SubmitOrder> client = clientFactory.CreateRequestClient <SubmitOrder>(); var messageCount = 10000; var concurrentMessageCount = 40; var loopLimit = messageCount / concurrentMessageCount; // warmup await Task.WhenAll(Enumerable.Range(0, concurrentMessageCount).Select(x => ProcessOrder(client))); // do it var timer = Stopwatch.StartNew(); for (var i = 0; i < loopLimit; i++) { await Task.WhenAll(Enumerable.Range(0, concurrentMessageCount).Select(x => ProcessOrder(client))); } timer.Stop(); Console.WriteLine("Message Count: {0}", messageCount); Console.WriteLine("Total duration: {0:g}", timer.Elapsed); Console.WriteLine("Request rate: {0:F2} (req/s)", messageCount * 1000 / timer.ElapsedMilliseconds); Console.WriteLine("Message rate: {0:F2} (msg/s)", messageCount * 4 * 1000 / timer.ElapsedMilliseconds); }
public void GetBusControl(Action <IReceiveEndpointConfigurator> callback) { _busControl = Bus.Factory.CreateUsingInMemory(x => { x.TransportConcurrencyLimit = _optionSet.TransportConcurrencyLimit; x.ReceiveEndpoint("rpc_consumer", e => { callback(e); _targetEndpointAddress = e.InputAddress; }); }); _busControl.Start(); _clientFactory = _busControl.CreateReplyToClientFactory(); }
public void GetBusControl(Action <IReceiveEndpointConfigurator> callback) { _busControl = Bus.Factory.CreateUsingRabbitMq(x => { x.Host(_hostSettings); x.ReceiveEndpoint("rpc_consumer" + (_settings.Durable ? "" : "_express"), e => { e.PurgeOnStartup = true; e.Durable = _settings.Durable; e.PrefetchCount = _settings.PrefetchCount; callback(e); _targetEndpointAddress = e.InputAddress; }); }); _busControl.Start(); _clientFactory = _busControl.CreateReplyToClientFactory(); }