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); }); }
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; }); }