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 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 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); }
@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 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 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 shouldIgnoreUnknownFields() { //given SubscriptionPolicy policy = subscriptionPolicy().withRate(10).build(); PatchData patch = patchData().set("unknown", 10).set("messageTtl", 30).build(); // when SubscriptionPolicy patched = Patch.apply(policy, patch); // then assertThat(patched.getMessageTtl()).isEqualTo(30); }
@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); }