Os tópicos internos, ou internal topics em inglês, são tópicos especiais criados automaticamente no Apache Kafka® para persistência de offsets, schemas, para manunteção do estado das operações sobre streams e até para o gerencimento de transações.
Exemplos:
__consumer_offsets
__transaction_state
__schemas
: somente com Schema Registry{consumer-group}--KSTREAM-JOINOTHER-0000000005-store-changelog
E os tópicos de usuários, ou user topics em inglês, são aqueles criados para persitência dos eventos das aplicações. Exemplo:
1
2
3
4
5
6
kafka-topics.sh --create \
--bootstrap-server 'localhost:9092' \
--replication-factor 1 \
--partitions 7 \
--topic 'meu-topico-teste' \
--config 'retention.ms=-1'
Ambos podem ser consumidos por qualquer aplicação interessada ou serem descritos com o kafka-topics
:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
kafka-topics.sh --describe \
--topic '__consumer_offsets' \
--bootstrap-server 'localhost:9092'
# Exemplo da saída
Topic: __consumer_offsets PartitionCount: 50 ReplicationFactor: 1 Configs: compression.type=producer,cleanup.policy=compact,segment.bytes=104857600
Topic: __consumer_offsets Partition: 0 Leader: 1 Replicas: 1 Isr: 1
Topic: __consumer_offsets Partition: 1 Leader: 1 Replicas: 1 Isr: 1
Topic: __consumer_offsets Partition: 2 Leader: 1 Replicas: 1 Isr: 1
Topic: __consumer_offsets Partition: 3 Leader: 1 Replicas: 1 Isr: 1
Topic: __consumer_offsets Partition: 4 Leader: 1 Replicas: 1 Isr: 1
Topic: __consumer_offsets Partition: 5 Leader: 1 Replicas: 1 Isr: 1
Topic: __consumer_offsets Partition: 6 Leader: 1 Replicas: 1 Isr: 1
# . . .
Por fim, Kafka Streams faz uso massivo de tópicos internos e isto significa que se a segurança estiver habilitada no cluster Apache Kafka®, será necessário conceder permissões de Admin.
Veja como conceder essas permissões nesta documentação
Até os próximos comparativos e avaliações!
Photo by Jonas Svidras on Unsplash