Example #1
0
        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");
            }
        }
Example #2
0
        /// <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);
        }
Example #3
0
        /// <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();
        }