static async Task RunLatencyBenchmark(ProgramOptionSet optionSet) { var messageLatencyOptionSet = new MessageLatencyOptionSet(); messageLatencyOptionSet.Parse(_remaining); IMessageLatencySettings settings = messageLatencyOptionSet; IMessageLatencyTransport transport; if (optionSet.Transport == ProgramOptionSet.TransportOptions.AzureServiceBus) { var serviceBusOptionSet = new ServiceBusOptionSet(); serviceBusOptionSet.Parse(_remaining); serviceBusOptionSet.ShowOptions(); ServicePointManager.Expect100Continue = false; ServicePointManager.UseNagleAlgorithm = false; transport = new ServiceBusMessageLatencyTransport(serviceBusOptionSet, settings); } else if (optionSet.Transport == ProgramOptionSet.TransportOptions.RabbitMq) { var rabbitMqOptionSet = new RabbitMqOptionSet(); rabbitMqOptionSet.Parse(_remaining); rabbitMqOptionSet.ShowOptions(); transport = new RabbitMqMessageLatencyTransport(rabbitMqOptionSet, settings); } else if (optionSet.Transport == ProgramOptionSet.TransportOptions.AmazonSqs) { var amazonSqsOptionSet = new AmazonSqsOptionSet(); amazonSqsOptionSet.Parse(_remaining); amazonSqsOptionSet.ShowOptions(); transport = new AmazonSqsMessageLatencyTransport(amazonSqsOptionSet, settings); } else if (optionSet.Transport == ProgramOptionSet.TransportOptions.ActiveMq) { var activeMqOptionSet = new ActiveMqOptionSet(); activeMqOptionSet.Parse(_remaining); activeMqOptionSet.ShowOptions(); transport = new ActiveMqMessageLatencyTransport(activeMqOptionSet, settings); } else { transport = new MediatorMessageLatencyTransport(settings); } var benchmark = new MessageLatencyBenchmark(transport, settings); await benchmark.Run(); }
static async Task Main(string[] args) { Console.WriteLine("MassTransit Benchmark"); Console.WriteLine(); var optionSet = new ProgramOptionSet(); try { _remaining = optionSet.Parse(args); if (optionSet.Help) { ShowHelp(optionSet); return; } if (optionSet.Verbose) { } optionSet.ShowOptions(); if (optionSet.Threads.HasValue) { ThreadPool.GetMinThreads(out var workerThreads, out var completionPortThreads); ThreadPool.SetMinThreads(Math.Max(workerThreads, optionSet.Threads.Value), completionPortThreads); } if (optionSet.Benchmark.HasFlag(ProgramOptionSet.BenchmarkOptions.Latency)) { await RunLatencyBenchmark(optionSet); } if (optionSet.Benchmark.HasFlag(ProgramOptionSet.BenchmarkOptions.Rpc)) { RunRequestResponseBenchmark(optionSet); } if (Debugger.IsAttached) { Console.Write("Press any key to continue..."); Console.ReadKey(); } } catch (OptionException ex) { Console.Write("mtbench: "); Console.WriteLine(ex.Message); Console.WriteLine("Use 'mtbench --help' for detailed usage information."); } catch (Exception ex) { Console.WriteLine("Crashed: {0}", ex.Message); } }
static void RunRequestResponseBenchmark(ProgramOptionSet optionSet) { var requestResponseOptionSet = new RequestResponseOptionSet(); requestResponseOptionSet.Parse(_remaining); IRequestResponseSettings settings = requestResponseOptionSet; IRequestResponseTransport transport; if (optionSet.Transport == ProgramOptionSet.TransportOptions.AzureServiceBus) { var serviceBusOptionSet = new ServiceBusOptionSet(); serviceBusOptionSet.Parse(_remaining); serviceBusOptionSet.ShowOptions(); ServicePointManager.Expect100Continue = false; ServicePointManager.UseNagleAlgorithm = false; transport = new ServiceBusRequestResponseTransport(serviceBusOptionSet, settings); } else if (optionSet.Transport == ProgramOptionSet.TransportOptions.RabbitMq) { var rabbitMqOptionSet = new RabbitMqOptionSet(); rabbitMqOptionSet.Parse(_remaining); rabbitMqOptionSet.ShowOptions(); transport = new RabbitMqRequestResponseTransport(rabbitMqOptionSet, settings); } else if (optionSet.Transport == ProgramOptionSet.TransportOptions.Mediator) { transport = new MediatorRequestResponseTransport(settings); } else { var inMemoryOptionSet = new InMemoryOptionSet(); inMemoryOptionSet.Parse(_remaining); inMemoryOptionSet.ShowOptions(); transport = new InMemoryRequestResponseTransport(inMemoryOptionSet, settings); } var benchmark = new RequestResponseBenchmark(transport, settings); benchmark.Run(); }
static void Main(string[] args) { Console.WriteLine("MassTransit Benchmark"); Console.WriteLine(); ServiceBusEnvironment.SystemConnectivity.Mode = ConnectivityMode.Https; var optionSet = new ProgramOptionSet(); try { _remaining = optionSet.Parse(args); if (optionSet.Help) { ShowHelp(optionSet); return; } if (optionSet.Verbose) { ConfigureLogger(); } optionSet.ShowOptions(); if (optionSet.Benchmark.HasFlag(ProgramOptionSet.BenchmarkOptions.Latency)) { RunLatencyBenchmark(optionSet); } if (optionSet.Benchmark.HasFlag(ProgramOptionSet.BenchmarkOptions.RPC)) { RunRequestResponseBenchmark(optionSet); } if (Debugger.IsAttached) { Console.Write("Press any key to continue..."); Console.ReadKey(); } } catch (OptionException ex) { Console.Write("mtbench: "); Console.WriteLine(ex.Message); Console.WriteLine("Use 'mtbench --help' for detailed usage information."); } }
static void RunLatencyBenchmark(ProgramOptionSet optionSet) { var messageLatencyOptionSet = new MessageLatencyOptionSet(); messageLatencyOptionSet.Parse(_remaining); IMessageLatencySettings settings = messageLatencyOptionSet; IMessageLatencyTransport transport; if (optionSet.Transport == ProgramOptionSet.TransportOptions.AzureServiceBus) { var serviceBusOptionSet = new ServiceBusOptionSet(); serviceBusOptionSet.Parse(_remaining); serviceBusOptionSet.ShowOptions(); ServicePointManager.Expect100Continue = false; ServicePointManager.UseNagleAlgorithm = false; transport = new ServiceBusMessageLatencyTransport(serviceBusOptionSet, settings); } else { var rabbitMqOptionSet = new RabbitMqOptionSet(); rabbitMqOptionSet.Parse(_remaining); rabbitMqOptionSet.ShowOptions(); transport = new RabbitMqMessageLatencyTransport(rabbitMqOptionSet, settings); } var benchmark = new MessageLatencyBenchmark(transport, settings); benchmark.Run(); }
static void RunRequestResponseBenchmark(ProgramOptionSet optionSet) { var requestResponseOptionSet = new RequestResponseOptionSet(); requestResponseOptionSet.Parse(_remaining); IRequestResponseSettings settings = requestResponseOptionSet; IRequestResponseTransport transport; if (optionSet.Transport == ProgramOptionSet.TransportOptions.AzureServiceBus) { var serviceBusOptionSet = new ServiceBusOptionSet(); serviceBusOptionSet.Parse(_remaining); serviceBusOptionSet.ShowOptions(); ServicePointManager.Expect100Continue = false; ServicePointManager.UseNagleAlgorithm = false; transport = new ServiceBusRequestResponseTransport(serviceBusOptionSet, settings); } else { var rabbitMqOptionSet = new RabbitMqOptionSet(); rabbitMqOptionSet.Parse(_remaining); rabbitMqOptionSet.ShowOptions(); transport = new RabbitMqRequestResponseTransport(rabbitMqOptionSet, settings); } var benchmark = new RequestResponseBenchmark(transport, settings); benchmark.Run(); }