protected override Task Send(Message[] messages) { foreach (var g in messages.GroupBy(m => m.Source)) { int topic = Math.Abs(g.Key.GetHashCode()) % _topicsIndexes.Length; OnReceived(topic.ToString(), (ulong)Interlocked.Increment(ref _topicsIndexes[topic]), g.ToArray()).Wait(); } return TaskAsyncHelper.Empty; }