Beispiel #1
0
        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();
        }