private void ReceivePoll(Internal.Poll <K, V> poll) { if (poll.Target == this) { var refreshOffsets = _commitRefreshing.RefreshOffsets; if (refreshOffsets.Any()) { _log.Debug($"Refreshing comitted offsets: {refreshOffsets.JoinToString(", ")}"); Commit(refreshOffsets, msg => Context.System.DeadLetters.Tell(msg)); } Poll(); if (poll.Periodic) { SchedulePoolTask(); } else { _delayedPoolInFlight = false; } } else { // Message was enqueued before a restart - can be ignored _log.Debug("Ignoring Poll message with stale target ref"); } }
/// <summary> /// KafkaConsumerActor /// </summary> /// <param name="owner">Owner actor to send critical failures to</param> /// <param name="settings">Consumer settings</param> /// <param name="partitionEventHandler">Partion events handler</param> public KafkaConsumerActor(IActorRef owner, ConsumerSettings <K, V> settings, IPartitionEventHandler <K, V> partitionEventHandler) { _owner = owner; _settings = settings; _partitionEventHandler = partitionEventHandler; _pollMessage = new Internal.Poll <K, V>(this, periodic: true); _delayedPollMessage = new Internal.Poll <K, V>(this, periodic: false); _log = Context.GetLogger(); _commitRefreshing = CommitRefreshing.Create <K, V>(_settings.CommitRefreshInterval); }
/// <summary> /// KafkaConsumerActor /// </summary> /// <param name="owner">Owner actor to send critical failures to</param> /// <param name="settings">Consumer settings</param> /// <param name="statisticsHandler">Statistics handler</param> /// <param name="partitionEventHandler">Partion events handler</param> public KafkaConsumerActor(IActorRef owner, ConsumerSettings <K, V> settings, IPartitionEventHandler partitionEventHandler, IStatisticsHandler statisticsHandler) { _owner = owner; _settings = settings; _statisticsHandler = statisticsHandler; _partitionEventHandler = partitionEventHandler; var restrictedConsumerTimeoutMs = Math.Round(_settings.PartitionHandlerWarning.TotalMilliseconds * 0.95); _restrictedConsumer = new RestrictedConsumer <K, V>(_consumer, TimeSpan.FromMilliseconds(restrictedConsumerTimeoutMs)); _warningDuration = _settings.PartitionHandlerWarning; _pollMessage = new Internal.Poll <K, V>(this, periodic: true); _delayedPollMessage = new Internal.Poll <K, V>(this, periodic: false); _log = Context.GetLogger(); }