private void awaitUntilNextPoll() { try (Timer.Context ctx = metrics.timer(CONSUMER_IDLE_TIME, subscription.getTopicName(), subscription.getName()).time()) { Thread.sleep(idleTimeCalculator.increaseIdleTime()); } catch (InterruptedException ex) { Thread.currentThread().interrupt(); } }
@Override public void assignConsumerForSubscription(Subscription subscription) { try { Signal start = Signal.of(Signal.SignalType.START, subscription.getQualifiedName(), subscription); backgroundProcess.accept(start); if (subscription.getState() == PENDING) { subscriptionRepository.updateSubscriptionState(subscription.getTopicName(), subscription.getName(), ACTIVE); } } catch (RuntimeException e) { logger.error("Error during assigning subscription {} to consumer", subscription.getQualifiedName(), e); } }
public SubscriptionAlreadyExistsException(Subscription subscription, Throwable cause) { super(String.format("Subscription %s for topic %s does not exist.", subscription.getName(), subscription.getQualifiedTopicName()), cause); }
@Override public boolean isValid(Subscription subscription, ConstraintValidatorContext context) { return !(subscription.getDeliveryType() == DeliveryType.BATCH && subscription.getContentType() == ContentType.AVRO); } }
public UnsupportedContentTypeException(Subscription subscription) { super(String.format( "Unsupported content type %s for subscription %s", subscription.getContentType(), subscription.getQualifiedName() )); }
public void untilSubscriptionCreated(Topic topic, Subscription subscription) { untilSubscriptionCreated(topic, subscription.getName(), subscription.isTrackingEnabled()); }
@Override public void updateSubscription(Subscription modifiedSubscription) { ensureSubscriptionExists(modifiedSubscription.getTopicName(), modifiedSubscription.getName()); logger.info("Updating subscription {}", modifiedSubscription.getQualifiedName()); overwrite(paths.subscriptionPath(modifiedSubscription), modifiedSubscription); }
private List<SubscriptionNameWithMetrics> getSubscriptionsMetrics() { return getAllSubscriptions().stream() .map(s -> { SubscriptionMetrics metrics = metricsRepository.loadMetrics(s.getTopicName(), s.getName()); return SubscriptionNameWithMetrics.from(metrics, s.getName(), s.getQualifiedTopicName()); }).collect(toList()); } }
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()); } }
try { Subscription subscription = subscriptionsCache.getSubscription(entry.getKey()); if (!subscription.isBatchSubscription()) { Set<String> consumerIds = entry.getValue(); subscription.getQualifiedName(), consumerIds); = balancer.balance(subscription.getSerialSubscriptionPolicy().getRate(), rateInfos); subscription.getQualifiedName(), rates); maxRateRegistry.update(subscription.getQualifiedName(), rates); });
@Override public void tearDown() { consuming = false; if (receiver != null) { receiver.stop(); } else { logger.info("No batch receiver to stop [subscription={}].", subscription.getQualifiedName()); } }
@Test public void shouldDeserializeSubscriptionWithoutTopicName() throws Exception { // given String json = "{\"name\": \"test\", \"endpoint\": \"http://localhost:8888\"}"; // when Subscription subscription = mapper.readValue(json, Subscription.class); // then assertThat(subscription.getName()).isEqualTo("test"); assertThat(subscription.getEndpoint().getEndpoint()).isEqualTo("http://localhost:8888"); }
public Optional<HttpAuthorizationProvider> create(Subscription subscription) { if(subscription.getEndpoint().containsCredentials()) { return Optional.of(new BasicAuthProvider(subscription.getEndpoint())); } else if (subscription.hasOAuthPolicy()) { return Optional.of(new OAuthHttpAuthorizationProvider(subscription.getQualifiedName(), accessTokens)); } return Optional.empty(); }
public static UnhealthySubscription from(Subscription subscription, SubscriptionHealth subscriptionHealth) { return new UnhealthySubscription(subscription.getName(), subscription.getQualifiedTopicName(), subscription.getMonitoringDetails().getSeverity(), subscriptionHealth.getProblems()); }
private int calculateInflightSize(Subscription subscription) { return Math.min( subscription.getSerialSubscriptionPolicy().getInflightSize(), defaultInflight ); }
@Override public void onSubscriptionChanged(Subscription subscription) { if (workTracker.isAssignedTo(subscription.getQualifiedName(), consumerId())) { logger.info("Updating subscription {}", subscription.getName()); supervisor.updateSubscription(subscription); } }
public void handle(FilterResult result, Message message, Subscription subscription) { if (result.isFiltered()) { if (logger.isDebugEnabled()) { logger.debug("Message filtered for subscription {} {}", subscription.getQualifiedName(), result); } offsetQueue.offerCommittedOffset(SubscriptionPartitionOffset.subscriptionPartitionOffset(message, subscription)); updateMetrics(subscription); if(subscription.isTrackingEnabled()) { trackers.get(subscription).logFiltered(toMessageMetadata(message, subscription), result.getFilterType().get()); } consumerRateLimiter.acquireFiltered(); } }
public boolean subscriptionHasRetryOnError() { if (subscription.isBatchSubscription()) { return subscription.getBatchSubscriptionPolicy().isRetryClientErrors(); } else { return subscription.getSerialSubscriptionPolicy().isRetryClientErrors(); } }
@Test public void shouldDeserializeSubscriptionWithDefaultTracking() throws Exception { // given String json = "{" + "\"name\": \"test\", " + "\"topicName\": \"g1.t1\", " + "\"endpoint\": \"http://localhost:8888\"" + "}"; // when Subscription subscription = mapper.readValue(json, Subscription.class); // then assertThat(subscription.isTrackingEnabled()).isFalse(); assertThat(subscription.getTrackingMode()).isEqualTo(TrackingMode.TRACKING_OFF); }