Пример #1
0
        private static void PeekCommitMany()
        {
            var rndD        = new Random();
            var prevDate    = DateTime.UtcNow;
            int prevDeci    = 0;
            int prevDecIAll = 0;

            while (true)
            {
                var deviceIdSet = new HashSet <long>();
                for (int i = 0; i < DequeueBatch; i++)
                {
                    deviceIdSet.Add(_deviceIds[rndD.Next(QueueSize)]);
                }

                var result = _messagingServiceClient.Peek(new DeviceListDtoClient {
                    DeviceIds = deviceIdSet.ToList()
                });
                _messagingServiceClient.Commit(new DeviceListDtoClient
                {
                    DeviceIds = result.Messages.Select(m => m.DeviceId).ToList()
                });

                Interlocked.Increment(ref _dec);
                Interlocked.Add(ref _decI, result.Messages.Count);
                Interlocked.Add(ref _decIAll, deviceIdSet.Count);

                if (_dec % _stepSize == 0)
                {
                    var now = DateTime.UtcNow;

                    Console.WriteLine("Dequeue: " + _dec + " items " + _decI + " perf: " + (_decI - prevDeci) * TimeSpan.FromSeconds(1).Ticks / (now - prevDate).Ticks + " msg/s" + " perf all: " + (_decIAll - prevDecIAll) * TimeSpan.FromSeconds(1).Ticks / (now - prevDate).Ticks + " msg/s");

                    prevDate    = now;
                    prevDeci    = _decI;
                    prevDecIAll = _decIAll;
                    Thread.Sleep(100);
                }
            }
        }
Пример #2
0
 protected override DequeueMessagesDtoClient Receive(DeviceListDtoClient deviceList)
 {
     return(_messagingServiceClient.Peek(deviceList));
 }