Пример #1
0
        private Func <MessageDelivery, Task> BuildConsumerFn(IChannel channel)
        {
            return(delivery =>
            {
                var message = (MessageWithTick)ProtoBuf.Meta.RuntimeTypeModel.Default.Deserialize(delivery.stream, null, typeof(MessageWithTick), delivery.bodySize);

                channel.BasicAck(delivery.deliveryTag, false);

                if (message.IsWarmUp)
                {
                    return Task.CompletedTask;
                }

                var diff = Stopwatch.GetTimestamp() - message.SentAtInTicks;

                return Task.CompletedTask;

//				lock (_hdrHistogram)
//					_hdrHistogram.RecordValue(diff * TickFreq);
            });
        }
Пример #2
0
        private Func <MessageDelivery, Task> BuildConsumerFn(IChannel channel)
        {
            return(delivery =>
            {
                var data = new byte[1024];
                var read = 0;
                while (read < delivery.bodySize)
                {
                    read += delivery.stream.Read(data, read, delivery.bodySize - read);
                }

                var prop = channel.RentBasicProperties();
                prop.CorrelationId = delivery.properties.CorrelationId;

                channel.BasicPublishFast("", delivery.properties.ReplyTo, false, prop, new ArraySegment <byte>(data, 0, read));

                channel.BasicAck(delivery.deliveryTag, false);

                return Task.CompletedTask;
            });
        }