管理 Streams 应用程序主题

Kafka Streams 应用程序持续读取 Kafka 主题,处理读取的数据,然后 将处理结果写回 Kafka 主题。该应用程序还可以在 Kafka 代理,例如状态存储更改日志主题。本节介绍这些 Topic 类型和 如何管理主题和应用程序。

Kafka Streams 区分用户主题内部主题

用户主题

用户主题存在于应用程序外部,并由应用程序读取或写入,包括:

输入主题
通过应用程序拓扑中的源处理器指定的主题;例如 via 和 .StreamsBuilder#stream()StreamsBuilder#table()Topology#addSource()
输出主题
通过应用程序拓扑中的接收器处理器指定的主题;例如 via 和 .KStream#to()KTable.to()Topology#addSink()
中间主题
主题既是应用程序拓扑的输入主题,也是输出主题。

用户主题必须提前创建并手动管理(例如,通过主题工具)。如果用户主题在多个应用程序之间共享以供读取,并且 编写时,应用程序用户必须协调 Topic 管理。如果用户主题是集中管理的,那么应用程序 然后,用户不需要自己管理主题,而只需获得对主题的访问权限。

注意

您不应在 broker 上使用 auto-create topic 功能来创建用户主题,因为:

  • 您的 Kafka 集群中可能会禁用主题的自动创建。
  • 自动创建会自动应用默认主题设置,例如 replicaton 因子。对于某些输出主题(例如,在 Kafka 代理配置中),这些默认设置可能不是您想要的。auto.create.topics.enable=true

内部主题

内部主题由 Kafka Streams 应用程序在执行时在内部使用,例如 状态存储的 changelog 主题。这些主题由应用程序创建,并且仅供该流应用程序使用。

如果在 Kafka 代理上启用了安全性,则必须授予底层客户端管理员权限,以便它们可以 创建内部主题集。有关更多信息,请参阅 Streams 安全性

注意

内部主题遵循命名约