private void putConsumer(final ConcurrentMap<String, ConcurrentMap<ConsumerGroup, ConsumerSequence>> result, final ConsumerProgress consumer) { final String consumerId = consumer.getConsumerId(); ConcurrentMap<ConsumerGroup, ConsumerSequence> consumerSequences = result.get(consumerId); if (consumerSequences == null) { consumerSequences = new ConcurrentHashMap<>(); result.putIfAbsent(consumerId, consumerSequences); } final ConsumerSequence consumerSequence = new ConsumerSequence(consumer.getPull(), consumer.getAck()); final ConsumerGroup consumerGroup = new ConsumerGroup(consumer.getSubject(), consumer.getGroup()); consumerSequences.putIfAbsent(consumerGroup, consumerSequence); }
private void initSubscribers() { final Collection<ConsumerGroupProgress> progresses = storage.allConsumerGroupProgresses(); progresses.forEach(progress -> { if (progress.isBroadcast()) { return; } progress.getConsumers().values().forEach(consumer -> { final String groupAndSubject = GroupAndSubject.groupAndSubject(consumer.getSubject(), consumer.getGroup()); addSubscriber(groupAndSubject, consumer.getConsumerId()); }); }); }
public void clean(Collection<ConsumerGroupProgress> progresses) { for (ConsumerGroupProgress progress : progresses) { final Map<String, ConsumerProgress> consumers = progress.getConsumers(); if (consumers == null || consumers.isEmpty()) { continue; } for (final ConsumerProgress consumer : consumers.values()) { PullLog pullLog = get(consumer.getSubject(), consumer.getGroup(), consumer.getConsumerId()); if (pullLog == null) continue; pullLog.clean(consumer.getAck()); } } }
public ConsumerProgress(ConsumerProgress progress) { this.subject = progress.getSubject(); this.group = progress.getGroup(); this.consumerId = progress.getConsumerId(); this.pull = progress.getPull(); this.ack = progress.getAck(); }