/** * @return a new list of all values (makes a copy) */ public List<V> values() { List<V> values = Lists.newArrayList(); forEach(value -> values.add(value)); return values; }
@Override public String toString() { StringBuilder sb = new StringBuilder(); sb.append('{'); final AtomicBoolean first = new AtomicBoolean(true); forEach(value -> { if (!first.getAndSet(false)) { sb.append(", "); } sb.append(value.toString()); }); sb.append('}'); return sb.toString(); }
@Override public void run(Timeout t) throws Exception { Set<MessageId> messageIds = new HashSet<>(); writeLock.lock(); try { timePartitions.addLast(new ConcurrentOpenHashSet<>()); ConcurrentOpenHashSet<MessageId> headPartition = timePartitions.removeFirst(); if (!headPartition.isEmpty()) { log.warn("[{}] {} messages have timed-out", consumerBase, timePartitions.size()); headPartition.forEach(messageId -> { messageIds.add(messageId); messageIdPartitionMap.remove(messageId); }); } } finally { writeLock.unlock(); } if (messageIds.size() > 0) { consumerBase.redeliverUnacknowledgedMessages(messageIds); } timeout = client.timer().newTimeout(this, tickDurationInMs, TimeUnit.MILLISECONDS); } }, this.tickDurationInMs, TimeUnit.MILLISECONDS);
/** * @return a new list of all values (makes a copy) */ public List<V> values() { List<V> values = Lists.newArrayList(); forEach(value -> values.add(value)); return values; }
private boolean hasRemoteProducers() { AtomicBoolean foundRemote = new AtomicBoolean(false); producers.forEach(producer -> { if (producer.isRemote()) { foundRemote.set(true); } }); return foundRemote.get(); }
@Override public String toString() { StringBuilder sb = new StringBuilder(); sb.append('{'); final AtomicBoolean first = new AtomicBoolean(true); forEach(value -> { if (!first.getAndSet(false)) { sb.append(", "); } sb.append(value.toString()); }); sb.append('}'); return sb.toString(); }
private boolean hasLocalProducers() { AtomicBoolean foundLocal = new AtomicBoolean(false); producers.forEach(producer -> { if (!producer.isRemote()) { foundLocal.set(true); } }); return foundLocal.get(); }
private boolean hasRemoteProducers() { AtomicBoolean foundRemote = new AtomicBoolean(false); producers.forEach(producer -> { if (producer.isRemote()) { foundRemote.set(true); } }); return foundRemote.get(); }
private boolean hasLocalProducers() { AtomicBoolean foundLocal = new AtomicBoolean(false); producers.forEach(producer -> { if (!producer.isRemote()) { foundLocal.set(true); } }); return foundLocal.get(); }
public Map<String, ProxyTopicStat> getStat() { Map<String, ProxyTopicStat> statMap = Maps.newHashMap(); service().getProducers().forEach((topicName, handlers) -> { ProxyTopicStat topicStat = statMap.computeIfAbsent(topicName, t -> new ProxyTopicStat()); handlers.forEach(handler -> topicStat.producerStats.add(new ProducerStats(handler))); statMap.put(topicName, topicStat); }); service().getConsumers().forEach((topicName, handlers) -> { ProxyTopicStat topicStat = statMap.computeIfAbsent(topicName, t -> new ProxyTopicStat()); handlers.forEach(handler -> topicStat.consumerStats.add(new ConsumerStats(handler))); statMap.put(topicName, topicStat); }); service().getReaders().forEach((topicName, handlers) -> { ProxyTopicStat topicStat = statMap.computeIfAbsent(topicName, t -> new ProxyTopicStat()); handlers.forEach(handler -> topicStat.consumerStats.add(new ConsumerStats(handler))); statMap.put(topicName, topicStat); }); return statMap; } }
@Override public void run(Timeout t) throws Exception { if (isAckTimeout()) { log.warn("[{}] {} messages have timed-out", consumerBase, oldOpenSet.size()); Set<MessageId> messageIds = new HashSet<>(); oldOpenSet.forEach(messageIds::add); oldOpenSet.clear(); consumerBase.redeliverUnacknowledgedMessages(messageIds); } toggle(); timeout = client.timer().newTimeout(this, ackTimeoutMillis, TimeUnit.MILLISECONDS); } }, ackTimeoutMillis, TimeUnit.MILLISECONDS);
@Override public CompletableFuture<Void> onPoliciesUpdate(Policies data) { if (log.isDebugEnabled()) { log.debug("[{}] isEncryptionRequired changes: {} -> {}", topic, isEncryptionRequired, data.encryption_required); } isEncryptionRequired = data.encryption_required; producers.forEach(producer -> { producer.checkPermissions(); producer.checkEncryption(); }); subscriptions.forEach((subName, sub) -> sub.getConsumers().forEach(Consumer::checkPermissions)); return checkReplicationAndRetryOnFailure(); }
producers.forEach(producer -> futures.add(producer.disconnect())); subscriptions.forEach((s, sub) -> futures.add(sub.disconnect()));
/** * Disconnect producers on given topic * * @param persistentTopic * The topic on which all producers should be disconnected */ private void disconnectProducers(PersistentTopic persistentTopic) { List<CompletableFuture<Void>> futures = Lists.newArrayList(); ConcurrentOpenHashSet<Producer> producers = persistentTopic.getProducers(); producers.forEach(producer -> { log.info("Producer [{}] has exceeded backlog quota on topic [{}]. Disconnecting producer", producer.getProducerName(), persistentTopic.getName()); futures.add(producer.disconnect()); }); FutureUtil.waitForAll(futures).thenRun(() -> { log.info("All producers on topic [{}] are disconnected", persistentTopic.getName()); }).exceptionally(exception -> { log.error("Error in disconnecting producers on topic [{}] [{}]", persistentTopic.getName(), exception); return null; }); } }
producers.forEach(producer -> futures.add(producer.disconnect())); subscriptions.forEach((s, sub) -> futures.add(sub.disconnect()));
handlers.forEach(handler -> { nsStat.numberOfMsgPublished += handler.getAndResetNumMsgsSent(); nsStat.numberOfBytesPublished += handler.getAndResetNumBytesSent(); handlers.forEach(handler -> { nsStat.numberOfMsgDelivered += handler.getAndResetNumMsgsAcked(); nsStat.numberOfBytesDelivered += handler.getAndResetNumBytesDelivered();
@Override public CompletableFuture<Void> onPoliciesUpdate(Policies data) { if (log.isDebugEnabled()) { log.debug("[{}] isEncryptionRequired changes: {} -> {}", topic, isEncryptionRequired, data.encryption_required); } isEncryptionRequired = data.encryption_required; producers.forEach(producer -> { producer.checkPermissions(); producer.checkEncryption(); }); subscriptions.forEach((subName, sub) -> { sub.getConsumers().forEach(Consumer::checkPermissions); if (sub.getDispatcher().getRateLimiter() != null) { sub.getDispatcher().getRateLimiter().onPoliciesUpdate(data); } }); checkMessageExpiry(); CompletableFuture<Void> replicationFuture = checkReplicationAndRetryOnFailure(); CompletableFuture<Void> dedupFuture = checkDeduplicationStatus(); CompletableFuture<Void> persistentPoliciesFuture = checkPersistencePolicies(); dispatchRateLimiter.onPoliciesUpdate(data); return CompletableFuture.allOf(replicationFuture, dedupFuture, persistentPoliciesFuture); }
private ProxyTopicStat getStat(TopicName topicName) { String topicNameStr = topicName.toString(); if (!service().getProducers().containsKey(topicNameStr) && !service().getConsumers().containsKey(topicNameStr) && !service().getReaders().containsKey(topicNameStr)) { LOG.warn("topic doesn't exist {}", topicNameStr); throw new RestException(Status.NOT_FOUND, "Topic does not exist"); } ProxyTopicStat topicStat = new ProxyTopicStat(); if (service().getProducers().containsKey(topicNameStr)) { service().getProducers().get(topicNameStr).forEach(handler -> { ProducerStats stat = new ProducerStats(handler); topicStat.producerStats.add(stat); }); } if (service().getConsumers().containsKey(topicNameStr)) { service().getConsumers().get(topicNameStr).forEach(handler -> { topicStat.consumerStats.add(new ConsumerStats(handler)); }); } if (service().getReaders().containsKey(topicNameStr)) { service().getReaders().get(topicNameStr).forEach(handler -> { topicStat.consumerStats.add(new ConsumerStats(handler)); }); } return topicStat; }
producers.forEach(producer -> { PublisherStats publisherStats = producer.getStats(); stats.msgRateIn += publisherStats.msgRateIn;
producers.forEach(producer -> { NonPersistentPublisherStats publisherStats = (NonPersistentPublisherStats) producer.getStats(); stats.msgRateIn += publisherStats.msgRateIn;