public Topic getTopicDetails(TopicName topicName) { return topicRepository.getTopicDetails(topicName); }
public List<String> listQualifiedTopicNames(String groupName) { return topicRepository.listTopicNames(groupName).stream() .map(topicName -> new TopicName(groupName, topicName).qualifiedName()) .collect(toList()); }
public List<Topic> listTopics(String groupName) { return topicRepository.listTopics(groupName); }
private SubscriptionName createSubscription(SubscriptionName subscriptionName) { Subscription subscription = subscription(subscriptionName).build(); Group group = Group.from(subscription.getTopicName().getGroupName()); if (!groupRepository.groupExists(group.getGroupName())) { groupRepository.createGroup(group); } if (!topicRepository.topicExists(subscription.getTopicName())) { topicRepository.createTopic(topic(subscription.getTopicName()).build()); } subscriptionRepository.createSubscription(subscription); await().atMost(adjust(ONE_SECOND)).until( () -> { subscriptionRepository.subscriptionExists(subscription.getTopicName(), subscription.getName()); subscriptionsCaches.forEach(subscriptionsCache -> subscriptionsCache.listActiveSubscriptionNames().contains(subscriptionName)); } ); return subscription.getQualifiedName(); }
public TopicMetrics getTopicMetrics(TopicName topicName) { return topicRepository.topicExists(topicName) ? metricRepository.loadMetrics(topicName) : TopicMetrics.unavailable(); }
private void createTopic(Topic topic, String createdBy) { topicRepository.createTopic(topic); if (!multiDCAwareService.topicExists(topic)) { createTopicInBrokers(topic); auditor.objectCreated(createdBy, topic); topicOwnerCache.onCreatedTopic(topic); } else { logger.info("Skipping creation of topic {} on brokers, topic already exists", topic.getQualifiedName()); } }
public List<Topic> listForOwnerId(OwnerId ownerId) { Collection<TopicName> topicNames = topicOwnerCache.get(ownerId); return topicRepository.getTopicsDetails(topicNames); } }
@Override public void createSubscription(Subscription subscription) { ensureConnected(); topicRepository.ensureTopicExists(subscription.getTopicName()); String subscriptionPath = paths.subscriptionPath(subscription); logger.info("Creating subscription {}", subscription.getQualifiedName()); try { zookeeper.create().forPath(subscriptionPath, mapper.writeValueAsBytes(subscription)); } catch (KeeperException.NodeExistsException ex) { throw new SubscriptionAlreadyExistsException(subscription, ex); } catch (Exception ex) { throw new InternalProcessingException(ex); } }
private void ensureTopicDoesNotExist(Topic topic) { if (topicRepository.topicExists(topic.getName())) { throw new TopicAlreadyExistsException(topic.getName()); } }
@Override public void onTopicUnblacklisted(String qualifiedTopicName) { Optional<Topic> topic = Optional.ofNullable( Optional.ofNullable( topicCache.get(qualifiedTopicName)).map(CachedTopic::getTopic).orElseGet(() -> topicRepository.getTopicDetails(TopicName.fromQualifiedName(qualifiedTopicName)))); topic.ifPresent(t -> topicCache.put(qualifiedTopicName, cachedTopic(t))); }
@Override public void start() { for(String groupName : groupRepository.listGroupNames()) { for(String topicName : topicRepository.listTopicNames(groupName)) { for(Subscription subscription : subscriptionRepository.listSubscriptions(new TopicName(groupName, topicName))) { subscriptions.put(subscription.getQualifiedName(), subscription); } } } } }
private void refillCache() { try { logger.info("Starting filling TopicOwnerCache cache"); long start = System.currentTimeMillis(); Multimap<OwnerId, TopicName> cache = ArrayListMultimap.create(); groupService.listGroupNames().stream() .flatMap(groupName -> topicRepository.listTopics(groupName).stream()) .forEach(topic -> cache.put(topic.getOwner(), topic.getName())); this.cache = Multimaps.synchronizedMultimap(cache); long end = System.currentTimeMillis(); logger.info("TopicOwnerCache filled. Took {}ms", end - start); } catch (Exception e) { logger.error("Error while filling TopicOwnerCache", e); } }
@Override public void onTopicBlacklisted(String qualifiedTopicName) { Optional<Topic> topic = Optional.ofNullable( Optional.ofNullable( topicCache.get(qualifiedTopicName)).map(CachedTopic::getTopic).orElseGet(() -> topicRepository.getTopicDetails(TopicName.fromQualifiedName(qualifiedTopicName)))); topic.ifPresent(t -> topicCache.put(qualifiedTopicName, bannedTopic(t))); }
@Override public void start() { for(String groupName : groupRepository.listGroupNames()) { for(String topicName : topicRepository.listTopicNames(groupName)) { for(Subscription subscription : subscriptionRepository.listSubscriptions(new TopicName(groupName, topicName))) { subscriptions.put(subscription.getQualifiedName(), subscription); } } } } }
@Override public void start() { for(String groupName : groupRepository.listGroupNames()) { for(Topic topic : topicRepository.listTopics(groupName)) { topicCache.put(topic.getQualifiedName(), cachedTopic(topic)); } } }
private boolean isTopicOwner(Subscription subscription, ContainerRequestContext requestContext) { return getOwnershipResolver(requestContext).isUserAnOwner(topicRepository.getTopicDetails(subscription.getTopicName()).getOwner()); }
public Consumer createConsumer(Subscription subscription) { Topic topic = topicRepository.getTopicDetails(subscription.getTopicName()); if (subscription.isBatchSubscription()) { return new BatchConsumer(messageReceiverFactory,
public Consumer createConsumer(Subscription subscription) { Topic topic = topicRepository.getTopicDetails(subscription.getTopicName()); if (subscription.isBatchSubscription()) { return new BatchConsumer(messageReceiverFactory,