Exemplo n.º 1
0
 public void OnPartitionsAssignedResetOffset(KafkaPartitionsAssignedEvent message)
 {
     // Always skip to the end of each partition
     message.Partitions = message.Partitions
                          .Select(
         topicPartitionOffset =>
         new TopicPartitionOffset(
             topicPartitionOffset.TopicPartition,
             Offset.End))
                          .ToList();
 }
Exemplo n.º 2
0
        private IEnumerable <TopicPartitionOffset> OnPartitionsAssigned(
            KafkaConsumer ownerConsumer,
            IConsumer <byte[]?, byte[]?> consumer,
            List <TopicPartition> partitions)
        {
            partitions.ForEach(
                partition =>
            {
                _logger.LogInformation(
                    KafkaEventIds.PartitionsAssigned,
                    "Assigned partition {topic} {partition}, member id: {memberId}",
                    partition.Topic,
                    partition.Partition,
                    consumer.MemberId);
            });

            var partitionsAssignedEvent = new KafkaPartitionsAssignedEvent(partitions, consumer.MemberId);

            CreateScopeAndPublishEvent(partitionsAssignedEvent);

            foreach (var topicPartitionOffset in partitionsAssignedEvent.Partitions)
            {
                if (topicPartitionOffset.Offset != Offset.Unset)
                {
                    _logger.LogDebug(
                        KafkaEventIds.PartitionOffsetReset,
                        "{topic} {partition} offset will be reset to {offset}.",
                        topicPartitionOffset.Topic,
                        topicPartitionOffset.Partition,
                        topicPartitionOffset.Offset);
                }
            }

            ownerConsumer.OnPartitionsAssigned(
                partitionsAssignedEvent.Partitions.Select(
                    topicPartitionOffset =>
                    topicPartitionOffset.TopicPartition).ToList());

            return(partitionsAssignedEvent.Partitions);
        }
Exemplo n.º 3
0
 public void OnPartitionsAssigned(KafkaPartitionsAssignedEvent message) =>
 _logger.LogInformation(
     "KafkaPartitionsAssignedEvent received: {count} partitions have been assigned ({partitions})",
     message.Partitions.Count,
     string.Join(", ", message.Partitions.Select(partition => partition.TopicPartition.ToString())));