public DynamicThrottlePolicy setMaxPendingCount(int maxCount) { super.setMaxPendingCount(maxCount); maxWindowSize = maxCount; return this; }
@Override public double getCurrentWindowSize() { if (throttlePolicy instanceof StaticThrottlePolicy) { return ((StaticThrottlePolicy)throttlePolicy).getMaxPendingCount(); } return 0; }
.map(n -> Math.min(Math.max(n, 1), WANTED_DOCUMENT_COUNT_UPPER_BOUND)) .orElse(1)); params.setThrottlePolicy(new StaticThrottlePolicy().setMaxPendingCount(options.concurrency.orElse(1))); params.setToTimestamp(0L); params.setFromTimestamp(0L);
@Override public boolean canSend(Message message, int pendingCount) { if ( ! super.canSend(message, pendingCount)) { return false; } long time = timer.milliTime(); double elapsed = (time - timeOfLastMessage); if (elapsed > IDLE_TIME_MILLIS) { windowSize = Math.min(windowSize, pendingCount + windowSizeIncrement); } timeOfLastMessage = time; return pendingCount < windowSize; }
@Override public void processReply(Reply reply) { super.processReply(reply); if ( ! reply.hasErrors()) { ++numOk; } }
@Override public void processMessage(Message message) { super.processMessage(message); if (++numSent < windowSize * resizeRate) { return;
public boolean canSend(Message message, int pendingCount) { if (!super.canSend(message, pendingCount)) { return false; } long period = timer.milliTime() / PERIOD; while (currentPeriod < period) { if (allotted > 0) { allotted = 0.0; } allotted = allotted + PERIOD * desiredRate / 1000; currentPeriod++; } if (allotted > 0.0) { allotted -= 1; return true; } return false; } }