private Retryer<MessageSendingResult> createRetryer(MessageBatch batch, BatchSubscriptionPolicy policy) { return createRetryer(batch, policy.getMessageBackoff(), SECONDS.toMillis(policy.getMessageTtl()), policy.isRetryClientErrors()); }
public BatchSubscriptionPolicy build() { return new BatchSubscriptionPolicy( subscriptionPolicy.messageTtl, subscriptionPolicy.retryClientErrors, subscriptionPolicy.messageBackoff, subscriptionPolicy.requestTimeout, subscriptionPolicy.batchSize, subscriptionPolicy.batchTime, subscriptionPolicy.batchVolume); }
public JsonMessageBatch(String id, ByteBuffer buffer, Subscription subscription, Clock clock) { this(id, buffer, subscription.getBatchSubscriptionPolicy().getBatchSize(), subscription.getBatchSubscriptionPolicy().getBatchTime(), clock, subscription.getHeaders()); }
public boolean subscriptionHasRetryOnError() { if (subscription.isBatchSubscription()) { return subscription.getBatchSubscriptionPolicy().isRetryClientErrors(); } else { return subscription.getSerialSubscriptionPolicy().isRetryClientErrors(); } }
@Override public MessageBatch createBatch(Subscription subscription) { try { ByteBuffer buffer = bufferPool.allocate(subscription.getBatchSubscriptionPolicy().getBatchVolume()); switch (subscription.getContentType()) { case JSON: return new JsonMessageBatch(randomUUID().toString(), buffer, subscription, clock); case AVRO: default: throw new UnsupportedOperationException("Batching is not supported yet for contentType " + subscription.getContentType()); } } catch (InterruptedException e) { throw new InternalProcessingException(e); } }
private void deliver(Runnable signalsInterrupt, MessageBatch batch, Retryer<MessageSendingResult> retryer) { try (Timer.Context timer = hermesMetrics.subscriptionLatencyTimer(subscription).time()) { retryer.call(() -> { signalsInterrupt.run(); return sender.send( batch, subscription.getEndpoint(), subscription.getEndpointAddressResolverMetadata(), subscription.getBatchSubscriptionPolicy().getRequestTimeout() ); }); } catch (Exception e) { logger.error("Batch was rejected [batch_id={}, subscription={}].", batch.getId(), subscription.getQualifiedName(), e); monitoring.markDiscarded(batch, subscription, e.getMessage()); } }
description, validDeliveryType == DeliveryType.SERIAL ? SubscriptionPolicy.create(validSubscriptionPolicy) : BatchSubscriptionPolicy.create(validSubscriptionPolicy), validTrackingEnabled, validTrackingMode,
public JsonMessageBatch(String id, ByteBuffer buffer, Subscription subscription, Clock clock) { this(id, buffer, subscription.getBatchSubscriptionPolicy().getBatchSize(), subscription.getBatchSubscriptionPolicy().getBatchTime(), clock, subscription.getHeaders()); }
@Override public MessageBatch createBatch(Subscription subscription) { try { ByteBuffer buffer = bufferPool.allocate(subscription.getBatchSubscriptionPolicy().getBatchVolume()); switch (subscription.getContentType()) { case JSON: return new JsonMessageBatch(randomUUID().toString(), buffer, subscription, clock); case AVRO: default: throw new UnsupportedOperationException("Batching is not supported yet for contentType " + subscription.getContentType()); } } catch (InterruptedException e) { throw new InternalProcessingException(e); } }
private void deliver(Runnable signalsInterrupt, MessageBatch batch, Retryer<MessageSendingResult> retryer) { try (Timer.Context timer = hermesMetrics.subscriptionLatencyTimer(subscription).time()) { retryer.call(() -> { signalsInterrupt.run(); return sender.send( batch, subscription.getEndpoint(), subscription.getEndpointAddressResolverMetadata(), subscription.getBatchSubscriptionPolicy().getRequestTimeout() ); }); } catch (Exception e) { logger.error("Batch was rejected [batch_id={}, subscription={}].", batch.getId(), subscription.getQualifiedName(), e); monitoring.markDiscarded(batch, subscription, e.getMessage()); } }
private Retryer<MessageSendingResult> createRetryer(MessageBatch batch, BatchSubscriptionPolicy policy) { return createRetryer(batch, policy.getMessageBackoff(), SECONDS.toMillis(policy.getMessageTtl()), policy.isRetryClientErrors()); }
public Builder() { subscriptionPolicy = new BatchSubscriptionPolicy(); }
@JsonCreator public static BatchSubscriptionPolicy create(Map<String, Object> properties) { return new BatchSubscriptionPolicy( (Integer) properties.getOrDefault("messageTtl", DEFAULT_MESSAGE_TTL), (Boolean) properties.getOrDefault("retryClientErrors", false), (Integer) properties.getOrDefault("messageBackoff", DEFAULT_MESSAGE_BACKOFF), (Integer) properties.getOrDefault("requestTimeout", DEFAULT_REQUEST_TIMEOUT), (Integer) properties.getOrDefault("batchSize", DEFAULT_BATCH_SIZE), (Integer) properties.getOrDefault("batchTime", DEFAULT_BATCH_TIME), (Integer) properties.getOrDefault("batchVolume", DEFAULT_BATCH_VOLUME) ); }