private static void DequeueMany() { 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.Dequeue(new DeviceListDtoClient { DeviceIds = deviceIdSet.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); } } }
protected override DequeueMessagesDtoClient Receive(DeviceListDtoClient deviceList) { return(_messagingServiceClient.Dequeue(deviceList)); }