private void ProcessResult(IImmutableSet <TopicPartition> partitionsToFetch, ConsumeResult <K, V> consumedMessage) { if (consumedMessage == null) { return; } var fetchedTopicPartition = consumedMessage.TopicPartition; if (!partitionsToFetch.Contains(fetchedTopicPartition)) { throw new ArgumentException($"Unexpected records polled. Expected one of {partitionsToFetch.JoinToString(", ")}," + $"but consumed result is {consumedMessage.ToJson()}, consumer assignment: {_consumer.Assignment.ToJson()}"); } foreach (var(stageActorRef, request) in _requests.ToTuples()) { // If requestor is interested in consumed topic, send him consumed result if (request.Topics.Contains(consumedMessage.TopicPartition)) { var messages = ImmutableList <ConsumeResult <K, V> > .Empty.Add(consumedMessage); stageActorRef.Tell(new KafkaConsumerActorMetadata.Internal.Messages <K, V>(request.RequestId, messages)); _requests = _requests.Remove(stageActorRef); } } }