Class TopicService
- java.lang.Object
-
- pl.allegro.tech.hermes.management.domain.topic.TopicService
-
@Component public class TopicService extends java.lang.Object
-
-
Constructor Summary
Constructors Constructor Description TopicService(MultiDCAwareService multiDCAwareService, pl.allegro.tech.hermes.domain.topic.TopicRepository topicRepository, GroupService groupService, TopicProperties topicProperties, SchemaService schemaService, TopicMetricsRepository metricRepository, TopicBlacklistService topicBlacklistService, TopicValidator topicValidator, TopicContentTypeMigrationService topicContentTypeMigrationService, java.time.Clock clock, Auditor auditor, MultiDatacenterRepositoryCommandExecutor multiDcExecutor, RepositoryManager repositoryManager, TopicOwnerCache topicOwnerCache, SubscriptionRemover subscriptionRemover)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidcreateTopicWithSchema(pl.allegro.tech.hermes.api.TopicWithSchema topicWithSchema, RequestUser createdBy, CreatorRights isAllowedToManage)java.lang.StringfetchSingleMessageFromPrimary(java.lang.String brokersClusterName, pl.allegro.tech.hermes.api.TopicName topicName, java.lang.Integer partition, java.lang.Long offset)java.util.List<pl.allegro.tech.hermes.api.Topic>getAllTopics()pl.allegro.tech.hermes.api.TopicgetTopicDetails(pl.allegro.tech.hermes.api.TopicName topicName)pl.allegro.tech.hermes.api.TopicMetricsgetTopicMetrics(pl.allegro.tech.hermes.api.TopicName topicName)pl.allegro.tech.hermes.api.TopicWithSchemagetTopicWithSchema(pl.allegro.tech.hermes.api.TopicName topicName)java.util.List<java.lang.String>listFilteredTopicNames(java.lang.String groupName, pl.allegro.tech.hermes.api.Query<pl.allegro.tech.hermes.api.Topic> query)java.util.List<java.lang.String>listFilteredTopicNames(pl.allegro.tech.hermes.api.Query<pl.allegro.tech.hermes.api.Topic> query)java.util.List<pl.allegro.tech.hermes.api.Topic>listForOwnerId(pl.allegro.tech.hermes.api.OwnerId ownerId)java.util.List<java.lang.String>listQualifiedTopicNames()java.util.List<java.lang.String>listQualifiedTopicNames(java.lang.String groupName)java.util.List<pl.allegro.tech.hermes.api.Topic>listTopics(java.lang.String groupName)java.util.List<java.lang.String>listTrackedTopicNames()java.util.List<java.lang.String>listTrackedTopicNames(java.lang.String groupName)java.util.Optional<byte[]>preview(pl.allegro.tech.hermes.api.TopicName topicName, int idx)java.util.List<pl.allegro.tech.hermes.api.MessageTextPreview>previewText(pl.allegro.tech.hermes.api.TopicName topicName)java.util.List<pl.allegro.tech.hermes.api.Topic>queryTopic(pl.allegro.tech.hermes.api.Query<pl.allegro.tech.hermes.api.Topic> query)java.util.List<pl.allegro.tech.hermes.api.TopicNameWithMetrics>queryTopicsMetrics(pl.allegro.tech.hermes.api.Query<pl.allegro.tech.hermes.api.TopicNameWithMetrics> query)voidremoveTopicWithSchema(pl.allegro.tech.hermes.api.Topic topic, RequestUser removedBy)voidscheduleTouchTopic(pl.allegro.tech.hermes.api.TopicName topicName, RequestUser touchedBy)Topic is touched so other Hermes instances are notified to read latest topic schema from schema-registry.voidtouchTopic(pl.allegro.tech.hermes.api.TopicName topicName, RequestUser touchedBy)voidupdateTopic(pl.allegro.tech.hermes.api.TopicName topicName, pl.allegro.tech.hermes.api.PatchData patch, RequestUser modifiedBy)voidupdateTopicWithSchema(pl.allegro.tech.hermes.api.TopicName topicName, pl.allegro.tech.hermes.api.PatchData patch, RequestUser modifiedBy)
-
-
-
Constructor Detail
-
TopicService
@Autowired public TopicService(MultiDCAwareService multiDCAwareService, pl.allegro.tech.hermes.domain.topic.TopicRepository topicRepository, GroupService groupService, TopicProperties topicProperties, SchemaService schemaService, TopicMetricsRepository metricRepository, TopicBlacklistService topicBlacklistService, TopicValidator topicValidator, TopicContentTypeMigrationService topicContentTypeMigrationService, java.time.Clock clock, Auditor auditor, MultiDatacenterRepositoryCommandExecutor multiDcExecutor, RepositoryManager repositoryManager, TopicOwnerCache topicOwnerCache, SubscriptionRemover subscriptionRemover)
-
-
Method Detail
-
createTopicWithSchema
public void createTopicWithSchema(pl.allegro.tech.hermes.api.TopicWithSchema topicWithSchema, RequestUser createdBy, CreatorRights isAllowedToManage)
-
removeTopicWithSchema
public void removeTopicWithSchema(pl.allegro.tech.hermes.api.Topic topic, RequestUser removedBy)
-
updateTopicWithSchema
public void updateTopicWithSchema(pl.allegro.tech.hermes.api.TopicName topicName, pl.allegro.tech.hermes.api.PatchData patch, RequestUser modifiedBy)
-
updateTopic
public void updateTopic(pl.allegro.tech.hermes.api.TopicName topicName, pl.allegro.tech.hermes.api.PatchData patch, RequestUser modifiedBy)
-
touchTopic
public void touchTopic(pl.allegro.tech.hermes.api.TopicName topicName, RequestUser touchedBy)
-
scheduleTouchTopic
public void scheduleTouchTopic(pl.allegro.tech.hermes.api.TopicName topicName, RequestUser touchedBy)Topic is touched so other Hermes instances are notified to read latest topic schema from schema-registry. However, schema-registry can be distributed so when schema is written there then it can not be available on all nodes immediately. This is the reason why we delay touch of topic here, to wait until schema is distributed on schema-registry nodes.
-
listQualifiedTopicNames
public java.util.List<java.lang.String> listQualifiedTopicNames(java.lang.String groupName)
-
listTopics
public java.util.List<pl.allegro.tech.hermes.api.Topic> listTopics(java.lang.String groupName)
-
listQualifiedTopicNames
public java.util.List<java.lang.String> listQualifiedTopicNames()
-
getTopicDetails
public pl.allegro.tech.hermes.api.Topic getTopicDetails(pl.allegro.tech.hermes.api.TopicName topicName)
-
getTopicWithSchema
public pl.allegro.tech.hermes.api.TopicWithSchema getTopicWithSchema(pl.allegro.tech.hermes.api.TopicName topicName)
-
getTopicMetrics
public pl.allegro.tech.hermes.api.TopicMetrics getTopicMetrics(pl.allegro.tech.hermes.api.TopicName topicName)
-
fetchSingleMessageFromPrimary
public java.lang.String fetchSingleMessageFromPrimary(java.lang.String brokersClusterName, pl.allegro.tech.hermes.api.TopicName topicName, java.lang.Integer partition, java.lang.Long offset)
-
listTrackedTopicNames
public java.util.List<java.lang.String> listTrackedTopicNames()
-
listTrackedTopicNames
public java.util.List<java.lang.String> listTrackedTopicNames(java.lang.String groupName)
-
listFilteredTopicNames
public java.util.List<java.lang.String> listFilteredTopicNames(pl.allegro.tech.hermes.api.Query<pl.allegro.tech.hermes.api.Topic> query)
-
listFilteredTopicNames
public java.util.List<java.lang.String> listFilteredTopicNames(java.lang.String groupName, pl.allegro.tech.hermes.api.Query<pl.allegro.tech.hermes.api.Topic> query)
-
queryTopic
public java.util.List<pl.allegro.tech.hermes.api.Topic> queryTopic(pl.allegro.tech.hermes.api.Query<pl.allegro.tech.hermes.api.Topic> query)
-
getAllTopics
public java.util.List<pl.allegro.tech.hermes.api.Topic> getAllTopics()
-
preview
public java.util.Optional<byte[]> preview(pl.allegro.tech.hermes.api.TopicName topicName, int idx)
-
previewText
public java.util.List<pl.allegro.tech.hermes.api.MessageTextPreview> previewText(pl.allegro.tech.hermes.api.TopicName topicName)
-
queryTopicsMetrics
public java.util.List<pl.allegro.tech.hermes.api.TopicNameWithMetrics> queryTopicsMetrics(pl.allegro.tech.hermes.api.Query<pl.allegro.tech.hermes.api.TopicNameWithMetrics> query)
-
listForOwnerId
public java.util.List<pl.allegro.tech.hermes.api.Topic> listForOwnerId(pl.allegro.tech.hermes.api.OwnerId ownerId)
-
-