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"); } }
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"); } }
public virtual void Stop() { CancellationTokenSource?.Cancel(true); ConsumerTask?.Wait(); ConsumerTask?.Dispose(); SlidingDoors.Clear(); ConsumerTask = null; CancellationTokenSource = null; }
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); }
/// <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); }
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); }
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}"); } }
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); }
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); }