public SubscriptionAlreadyExistsException(Subscription subscription, Throwable cause) { super(String.format("Subscription %s for topic %s does not exist.", subscription.getName(), subscription.getQualifiedTopicName()), cause); }
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(); } }
public static SentMessageTrace createUndeliveredMessage(Subscription subscription, String message, Throwable cause, Long loggingTime, Integer partition, Long offset, String cluster) { return createUndeliveredMessage(subscription.getQualifiedTopicName(), subscription.getName(), message, cause.getMessage(), loggingTime, partition, offset, cluster); }
public int countActiveConsumers(Subscription subscription) { // This is an ad-hoc implementation, utilizing exising inflight nodes. return counterStorage.countInflightNodes(subscription.getTopicName(), subscription.getName()); } }
private void updateMeters(Subscription subscription) { hermesMetrics.meter(Meters.DISCARDED_METER).mark(); hermesMetrics.meter(Meters.DISCARDED_TOPIC_METER, subscription.getTopicName()).mark(); hermesMetrics.meter(Meters.DISCARDED_SUBSCRIPTION_METER, subscription.getTopicName(), subscription.getName()).mark(); }
protected void updateMetrics(String counterToUpdate, Message message, Subscription subscription) { hermesMetrics.counter(counterToUpdate, subscription.getTopicName(), subscription.getName()).inc(); hermesMetrics.decrementInflightCounter(subscription); hermesMetrics.inflightTimeHistogram(subscription).update(System.currentTimeMillis() - message.getReadingTimestamp()); } }
private void updateMeters(Message message, Subscription subscription, MessageSendingResult result) { hermesMetrics.meter(Meters.METER).mark(); hermesMetrics.meter(Meters.TOPIC_METER, subscription.getTopicName()).mark(); hermesMetrics.meter(Meters.SUBSCRIPTION_METER, subscription.getTopicName(), subscription.getName()).mark(); hermesMetrics.meter( Meters.SUBSCRIPTION_THROUGHPUT_BYTES, subscription.getTopicName(), subscription.getName()) .mark(message.getSize()); hermesMetrics.registerConsumerHttpAnswer(subscription, result.getStatusCode()); } }
private void markDelivered(MessageBatch batch, Subscription subscription, MessageSendingResult result) { metrics.registerConsumerHttpAnswer(subscription, result.getStatusCode()); metrics.meter(METER).mark(batch.size()); metrics.meter(TOPIC_METER, subscription.getTopicName()).mark(batch.size()); metrics.meter(SUBSCRIPTION_METER, subscription.getTopicName(), subscription.getName()).mark(batch.size()); metrics.meter(SUBSCRIPTION_BATCH_METER, subscription.getTopicName(), subscription.getName()).mark(); metrics.counter(Counters.DELIVERED, subscription.getTopicName(), subscription.getName()).inc(batch.size()); batch.getMessagesMetadata().forEach(m -> trackers.get(subscription).logSent(m, result.getHostname())); }
@Override public void updateSubscription(Subscription modifiedSubscription) { ensureSubscriptionExists(modifiedSubscription.getTopicName(), modifiedSubscription.getName()); logger.info("Updating subscription {}", modifiedSubscription.getQualifiedName()); overwrite(paths.subscriptionPath(modifiedSubscription), modifiedSubscription); }
@Override public void handleFailed(Message message, Subscription subscription, MessageSendingResult result) { hermesMetrics.meter(Meters.FAILED_METER_SUBSCRIPTION, subscription.getTopicName(), subscription.getName()).mark(); registerFailureMetrics(subscription, result); hermesMetrics.meter( Meters.SUBSCRIPTION_THROUGHPUT_BYTES, subscription.getTopicName(), subscription.getName()) .mark(message.getSize()); trackers.get(subscription).logFailed(toMessageMetadata(message, subscription), result.getRootCause(), result.getHostname()); }
@Override public void shutdown() { hermesMetrics.unregisterOutputRateGauge(subscription.getTopicName(), subscription.getName()); rateLimitSupervisor.unregister(this); outputRateCalculator.shutdown(); }
@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"); }
private void setUpMetrics(Subscription subscription) { when(hermesMetrics.latencyTimer(subscription)).thenReturn(consumerLatencyTimer); when(hermesMetrics.consumerErrorsOtherMeter(subscription)).thenReturn(errors); when(consumerLatencyTimer.time()).thenReturn(consumerLatencyTimerContext); when(hermesMetrics.meter(Meters.FAILED_METER_SUBSCRIPTION, subscription.getTopicName(), subscription.getName())).thenReturn(failedMeter); }
@Override public void initialize() { outputRateCalculator.start(); adjustConsumerRate(); hermesMetrics.registerOutputRateGauge( subscription.getTopicName(), subscription.getName(), rateLimiter::getRate); rateLimitSupervisor.register(this); }
public void registerConsumerHttpAnswer(Subscription subscription, int statusCode) { PathContext pathContext = pathContext() .withGroup(escapeDots(subscription.getTopicName().getGroupName())) .withTopic(escapeDots(subscription.getTopicName().getName())) .withSubscription(escapeDots(subscription.getName())) .withHttpCode(statusCode) .withHttpCodeFamily(httpStatusFamily(statusCode)) .build(); metricRegistry.meter(pathCompiler.compile(Meters.ERRORS_HTTP_BY_FAMILY, pathContext)).mark(); metricRegistry.meter(pathCompiler.compile(Meters.ERRORS_HTTP_BY_CODE, pathContext)).mark(); }
private MessageMetadata messageMetadata(Subscription subscription, String batchId, Message message) { return new MessageMetadata(message.getId(), batchId, message.getOffset(), message.getPartition(), subscription.getQualifiedTopicName(), subscription.getName(), message.getKafkaTopic().asString(), message.getPublishingTimestamp(), message.getReadingTimestamp()); }
public Meter consumerErrorsTimeoutMeter(Subscription subscription) { PathContext pathContext = pathContext() .withGroup(escapeDots(subscription.getTopicName().getGroupName())) .withTopic(escapeDots(subscription.getTopicName().getName())) .withSubscription(escapeDots(subscription.getName())) .build(); return metricRegistry.meter(pathCompiler.compile(Meters.ERRORS_TIMEOUTS, pathContext)); }
public static MessageMetadata toMessageMetadata(Message message, Subscription subscription) { return new MessageMetadata(message.getId(), message.getOffset(), message.getPartition(), message.getTopic(), subscription.getName(), message.getKafkaTopic().asString(), message.getPublishingTimestamp(), message.getReadingTimestamp()); } }
public Meter oAuthSubscriptionTokenRequestMeter(Subscription subscription, String oAuthProviderName) { PathContext pathContext = pathContext() .withGroup(escapeDots(subscription.getTopicName().getGroupName())) .withTopic(escapeDots(subscription.getTopicName().getName())) .withSubscription(escapeDots(subscription.getName())) .withOAuthProvider(escapeDots(oAuthProviderName)) .build(); return metricRegistry.meter(pathCompiler.compile(Meters.OAUTH_SUBSCRIPTION_TOKEN_REQUEST, pathContext)); }
public Histogram inflightTimeHistogram(Subscription subscription) { return metricRegistry.histogram(pathCompiler.compile(Histograms.INFLIGHT_TIME, pathContext() .withGroup(escapeDots(subscription.getTopicName().getGroupName())) .withTopic(escapeDots(subscription.getTopicName().getName())) .withSubscription(escapeDots(subscription.getName())) .build())); }