Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache kafka 如何在Kafka中配置中间处理主题?_Apache Kafka - Fatal编程技术网

Apache kafka 如何在Kafka中配置中间处理主题?

Apache kafka 如何在Kafka中配置中间处理主题?,apache-kafka,Apache Kafka,假设有两个主题,A和B。主题A的保留期为1年,包含1年的数据 进程p转换来自主题A的消息并将其存储在主题B中。进程p需要读取来自主题A的所有消息。其他一些进程读取来自主题B的消息并将其存储在数据库中 问题:如何配置主题B以处理主题A中的所有消息?具体来说,它必须与卡夫卡主题具有相同的保留期吗?否,除非需要,否则应用程序中使用的所有卡夫卡主题不必具有相同的保留期。 您可以从命令行覆盖主题B的保留期 这取决于用例,您希望在主题B中保持处理后的数据可用的时间 从代码中也可以看到这一点: 持续使用的主题

假设有两个主题,A和B。主题A的保留期为1年,包含1年的数据

进程p转换来自主题A的消息并将其存储在主题B中。进程p需要读取来自主题A的所有消息。其他一些进程读取来自主题B的消息并将其存储在数据库中


问题:如何配置主题B以处理主题A中的所有消息?具体来说,它必须与卡夫卡主题具有相同的保留期吗?

否,除非需要,否则应用程序中使用的所有卡夫卡主题不必具有相同的保留期。 您可以从命令行覆盖主题B的保留期

这取决于用例,您希望在主题B中保持处理后的数据可用的时间

从代码中也可以看到这一点:
持续使用的主题不需要很长的保留时间,只需要足够的时间来覆盖消费者的停机时间/处理延迟


如果进程将其所有数据存储在数据库中,则不需要保留主题B,以便您可以将其设置为具有较短的保留时间。

如果您在主题B上设置较短的保留时间,例如1周,时间戳大于1周的邮件不会被Kafka的日志清理器删除吗?是的-但这只是一个问题,如果您需要将主题B的数据保留更长时间(由于某些其他要求),或者无法保证数据将在1周内处理到DB。这是我最初的理解,直到我在文档中读到log.message.timestamp.type。默认情况下,它设置为log.message.timestamp.type=CreatedTime。据我所知,这意味着时间戳被转移到主题B。因此,比主题B的保留时间早的消息将被标记为立即删除。然后,日志清理器可能会在process P能够使用它们之前将它们删除。“时间戳被带过”在使用
消费者、生产者界面在主题之间复制消息时由应用程序控制。如果在制作时创建新的
消息
,并复制键、值和标题,则可以强制忘记原始的CreateTime。但是如果我们要保留原始的CreateTime呢?