在 Kafka 中,我可以创建一个 kafka 主题并让多个生产者写入它吗

In Kafka, can I create a single kafka topic and have multiple producers write to it

我有以下用例: 来自单个数据源的日志文件将被推送到 Kafka 主题(比如主题 1)。 有一个消费者将从中读取并转换为 json 格式并写回另一个主题(主题 2)。 另一个期望 json 中的数据的消费者将从主题 2 中读取,将进行一些其他修改并写回另一个主题(主题 3)。

我的问题是不创建 3 个不同的主题,我可以创建一个主题并让这些多个制作人写同一个主题吗?由于无法为生产者设置组 ID,我的消费者如何知道要从哪个分区读取? 我从 SO 中学到的一种解决方案是创建分区并让每个生产者单独写入特定分区。这种方法的问题是生产者和消费者的数量可能会发生变化,并且不需要修改主题。请指教

正如有人已经评论过的,您不应该将不同类型的架构推送到单个主题。 Kafka 中的主题数量不是问题。您可以使用一些术语来管理它们。像 "topic1"、"topic1_json"、"topic1_modification"。

如果您的用例有难以管理的主题列表,同一个消费者可以阅读所有 json 个主题并且您不希望批处理目标文件系统中的相同架构事件。然后你可以按照下面的方法。

创建具有通用模式的对象或设置一些模式注册表(检查 confluent schema registry)。您所有的模式都适合作为子记录或记录的地方将携带模式信息。然后为所有 json 个响应创建一个主题(例如:topic_json_generic)。从 "topic1" 读取数据后将其推送到 "topic_json_generic"。类似的进一步主题。在消费者级别,您可以处理需要对哪种类型的对象执行的操作。