@Override public double get() { int consumersCount = activeConsumerCounter.countActiveConsumers(subscription); double subscriptionRate = subscription.getSerialSubscriptionPolicy().getRate().doubleValue(); return subscriptionRate / Math.max(consumersCount, 1); }
@Override public double get() { int consumersCount = activeConsumerCounter.countActiveConsumers(subscription); double subscriptionRate = subscription.getSerialSubscriptionPolicy().getRate().doubleValue(); return subscriptionRate / Math.max(consumersCount, 1); }
@Override public void updateSubscription(Subscription newSubscription) { this.subscription = newSubscription; this.filterRateLimiter.setRate(newSubscription.getSerialSubscriptionPolicy().getRate()); this.outputRateCalculator.updateSubscription(newSubscription); }
@Override public void updateSubscription(Subscription newSubscription) { this.subscription = newSubscription; this.filterRateLimiter.setRate(newSubscription.getSerialSubscriptionPolicy().getRate()); this.outputRateCalculator.updateSubscription(newSubscription); }
= balancer.balance(subscription.getSerialSubscriptionPolicy().getRate(), rateInfos);
= balancer.balance(subscription.getSerialSubscriptionPolicy().getRate(), rateInfos);
@Test public void shouldApplyPatch() { // given SubscriptionPolicy policy = SubscriptionPolicy.create(new HashMap<>()); PatchData patch = patchData().set("rate", 10).set("messageTtl", 30).build(); // when SubscriptionPolicy patched = Patch.apply(policy, patch); // when & then assertThat(patched.getRate()).isEqualTo(10); assertThat(patched.getMessageTtl()).isEqualTo(30); }
public SerialConsumerRateLimiter(Subscription subscription, OutputRateCalculatorFactory outputRateCalculatorFactory, HermesMetrics hermesMetrics, ConsumerRateLimitSupervisor rateLimitSupervisor, Clock clock) { this.subscription = subscription; this.hermesMetrics = hermesMetrics; this.rateLimitSupervisor = rateLimitSupervisor; this.sendCounters = new SendCounters(clock); this.outputRateCalculator = outputRateCalculatorFactory.createCalculator(subscription, sendCounters); this.currentMode = OutputRateCalculator.Mode.NORMAL; this.rateLimiter = RateLimiter.create(calculateInitialRate().rate()); this.filterRateLimiter = RateLimiter.create(subscription.getSerialSubscriptionPolicy().getRate()); }
public SubscriptionBuilder withRequestTimeout(int timeout) { SubscriptionPolicy policy = this.serialSubscriptionPolicy; this.serialSubscriptionPolicy = SubscriptionPolicy.Builder.subscriptionPolicy().withRate(policy.getRate()) .withMessageTtl(policy.getMessageTtl()).withMessageBackoff(policy.getMessageBackoff()) .withRequestTimeout(timeout).build(); return this; }
public SerialConsumerRateLimiter(Subscription subscription, OutputRateCalculatorFactory outputRateCalculatorFactory, HermesMetrics hermesMetrics, ConsumerRateLimitSupervisor rateLimitSupervisor, Clock clock) { this.subscription = subscription; this.hermesMetrics = hermesMetrics; this.rateLimitSupervisor = rateLimitSupervisor; this.sendCounters = new SendCounters(clock); this.outputRateCalculator = outputRateCalculatorFactory.createCalculator(subscription, sendCounters); this.currentMode = OutputRateCalculator.Mode.NORMAL; this.rateLimiter = RateLimiter.create(calculateInitialRate().rate()); this.filterRateLimiter = RateLimiter.create(subscription.getSerialSubscriptionPolicy().getRate()); }
public SubscriptionBuilder withRequestTimeout(int timeout) { SubscriptionPolicy policy = this.serialSubscriptionPolicy; this.serialSubscriptionPolicy = SubscriptionPolicy.Builder.subscriptionPolicy().withRate(policy.getRate()) .withMessageTtl(policy.getMessageTtl()).withMessageBackoff(policy.getMessageBackoff()) .withRequestTimeout(timeout).build(); return this; }
@Test public void shouldApplyPatchToSubscriptionPolicy() { //given PatchData patch = patchData().set("rate", 8).build(); //when SubscriptionPolicy subscription = subscriptionPolicy() .withRate(1) .applyPatch(patch).build(); //then assertThat(subscription.getRate()).isEqualTo(8); }
@Test public void shouldPatchNestedObjects() { // given Subscription subscription = subscription("group.topic", "sub").build(); PatchData patch = patchData().set( "subscriptionPolicy", patchData().set("rate", 200).set("messageTtl", 8).build().getPatch() ).build(); // when SubscriptionPolicy result = Patch.apply(subscription, patch).getSerialSubscriptionPolicy(); // then assertThat(result.getMessageTtl()).isEqualTo(8); assertThat(result.getRate()).isEqualTo(200); }