Пример #1
0
 public void BlockIfFullLoad()
 {
     while (SlidingDoors.Sum(d => d.Value.MessageCount) > _consumerConfig.FullLoadThreshold)
     {
         Thread.Sleep(_consumerConfig.WaitInterval);
         _logger.Warn($"working is full load sleep 1000 ms");
     }
 }
Пример #2
0
 protected void BlockIfFullLoad()
 {
     while (SlidingDoors.Sum(d => d.Value.MessageCount) > ConsumerConfig.FullLoadThreshold)
     {
         Task.Delay(ConsumerConfig.WaitInterval).Wait();
         Logger.LogWarning($"{Id} is full load sleep 1000 ms");
     }
 }
Пример #3
0
 public virtual void Stop()
 {
     CancellationTokenSource?.Cancel(true);
     ConsumerTask?.Wait();
     ConsumerTask?.Dispose();
     SlidingDoors.Clear();
     ConsumerTask            = null;
     CancellationTokenSource = null;
 }
Пример #4
0
        internal void RemoveMessage(int partition, long offset)
        {
            var slidingDoor = SlidingDoors.TryGetValue(partition);

            if (slidingDoor == null)
            {
                throw new Exception("partition slidingDoor not exists");
            }
            slidingDoor.RemoveOffset(offset);
        }
Пример #5
0
        /// <summary>
        /// </summary>
        /// <param name="messageOffset"></param>
        protected virtual void FinishConsumingMessage(MessageOffset messageOffset)
        {
            var slidingDoor = SlidingDoors.TryGetValue(messageOffset.SlidingDoorKey);

            if (slidingDoor == null)
            {
                throw new Exception("partition slidingDoor not exists");
            }
            slidingDoor.RemoveOffset(messageOffset);
        }
Пример #6
0
        protected void AddMessageOffset(string topic, int partition, long offset)
        {
            var slidingDoor = SlidingDoors.GetOrAdd(SlidingDoor.GetSlidingDoorKey(topic, partition),
                                                    key => new SlidingDoor(CommitOffset,
                                                                           topic,
                                                                           partition,
                                                                           Configuration.Instance.GetCommitPerMessage()));

            slidingDoor.AddOffset(offset);
        }
Пример #7
0
        protected void BlockIfFullLoad()
        {
            var remainMessageCount = 0;

            while ((remainMessageCount = SlidingDoors.Sum(d => d.Value.MessageCount)) > ConsumerConfig.FullLoadThreshold)
            {
                Task.Delay(ConsumerConfig.WaitInterval).Wait();
                Logger.LogWarning($"{Id} is full load sleep {ConsumerConfig.WaitInterval} ms, remain message count:{remainMessageCount} threshold:{ConsumerConfig.FullLoadThreshold}");
            }
        }
Пример #8
0
        internal void AddMessage(EQueueMessages.QueueMessage message)
        {
            var slidingDoor = SlidingDoors.GetOrAdd(message.QueueId, partition =>
            {
                return(new SlidingDoor(CommitOffset,
                                       partition,
                                       Configuration.Instance.GetCommitPerMessage()));
            });

            slidingDoor.AddOffset(message.QueueOffset);
        }
Пример #9
0
        internal void AddMessage(KafkaMessages.Message message)
        {
            var slidingDoor = SlidingDoors.GetOrAdd(message.PartitionId.Value, partition =>
            {
                return(new SlidingDoor(CommitOffset,
                                       partition,
                                       Configuration.Instance.GetCommitPerMessage()));
            });

            slidingDoor.AddOffset(message.Offset);
        }