private boolean shouldRetryOnClientError() { return subscription.getSerialSubscriptionPolicy().isRetryClientErrors(); }
private int calculateInflightSize(Subscription subscription) { return Math.min( subscription.getSerialSubscriptionPolicy().getInflightSize(), defaultInflight ); }
private int calculateInflightSize(Subscription subscription) { return Math.min( subscription.getSerialSubscriptionPolicy().getInflightSize(), defaultInflight ); }
private int delayForSubscription() { return subscription.getSerialSubscriptionPolicy().getSendingDelay(); }
private long extractRetryDelay(MessageSendingResult result) { long defaultBackoff = subscription.getSerialSubscriptionPolicy().getMessageBackoff(); long ttl = TimeUnit.SECONDS.toMillis(subscription.getSerialSubscriptionPolicy().getMessageTtl()); return result.getRetryAfterMillis().map(delay -> Math.min(delay, ttl)).orElse(defaultBackoff); }
private boolean willExceedTtl(Message message, long delay) { long ttl = TimeUnit.SECONDS.toMillis(subscription.getSerialSubscriptionPolicy().getMessageTtl()); long remainingTtl = Math.max(ttl - delay, 0); return message.isTtlExceeded(remainingTtl); }
private long extractRetryDelay(MessageSendingResult result) { long defaultBackoff = subscription.getSerialSubscriptionPolicy().getMessageBackoff(); long ttl = TimeUnit.SECONDS.toMillis(subscription.getSerialSubscriptionPolicy().getMessageTtl()); return result.getRetryAfterMillis().map(delay -> Math.min(delay, ttl)).orElse(defaultBackoff); }
private boolean willExceedTtl(Message message, long delay) { long ttl = TimeUnit.SECONDS.toMillis(subscription.getSerialSubscriptionPolicy().getMessageTtl()); long remainingTtl = Math.max(ttl - delay, 0); return message.isTtlExceeded(remainingTtl); }
@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); }
@Test public void shouldDeserializeSubscriptionWithoutBackoff() throws Exception { // given String json = "{\"name\": \"test\", \"endpoint\": \"http://localhost:8888\", \"subscriptionPolicy\": {\"messageTtl\": 100}}"; // when Subscription subscription = mapper.readValue(json, Subscription.class); // then assertThat(subscription.getSerialSubscriptionPolicy().getMessageBackoff()).isEqualTo(100); }
private HttpRequestFactory httpRequestFactory(Subscription subscription) { int requestTimeout = subscription.getSerialSubscriptionPolicy().getRequestTimeout(); return new HttpRequestFactory(getHttpClient(subscription), requestTimeout, metadataAppender, authorizationProviderFactory.create(subscription)); }
public boolean subscriptionHasRetryOnError() { if (subscription.isBatchSubscription()) { return subscription.getBatchSubscriptionPolicy().isRetryClientErrors(); } else { return subscription.getSerialSubscriptionPolicy().isRetryClientErrors(); } }
private HttpRequestFactory httpRequestFactory(Subscription subscription) { int requestTimeout = subscription.getSerialSubscriptionPolicy().getRequestTimeout(); return new HttpRequestFactory(getHttpClient(subscription), requestTimeout, metadataAppender, authorizationProviderFactory.create(subscription)); }
private void registerResultInRateLimiter(MessageSendingResult result) { if (result.ignoreInRateCalculation(subscription.getSerialSubscriptionPolicy().isRetryClientErrors(), subscription.hasOAuthPolicy())) { rateLimiter.registerSuccessfulSending(); } else { rateLimiter.registerFailedSending(); } }
private void registerResultInRateLimiter(MessageSendingResult result) { if (result.ignoreInRateCalculation(subscription.getSerialSubscriptionPolicy().isRetryClientErrors(), subscription.hasOAuthPolicy())) { rateLimiter.registerSuccessfulSending(); } else { rateLimiter.registerFailedSending(); } }
@Test public void shouldNotRetryOnRetryAfterAboveTtl() throws InterruptedException { // given int retrySeconds = subscription.getSerialSubscriptionPolicy().getMessageTtl(); Message message = message(); doReturn(backoff(retrySeconds)).when(messageSender).send(message); // when sender.sendAsync(message); // then verifyRateLimiterSuccessfulSendingCountedTimes(1); verifyErrorHandlerHandleDiscarded(message, subscription); verifySemaphoreReleased(); }
@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); }