我想将 Kafka 集群设置为仅允许针对特定主题的大消息。从文档中我看到,如果我想在整个集群级别执行此操作,我可以通过设置message.max.bytes允许代理上的大量数据并replica.fetch.max.bytes允许复制它来实现,但我的理解是这会增加集群中所有主题的内存使用量,而不仅仅是我知道可以接收大消息的主题。还有一个主题级别的设置max.message.bytes控制消息的最大大小,但我没有看到控制复制操作的最大数据大小的主题级别设置。这些密切相关的设置之一在主题级别无法配置,这似乎很奇怪;也许我错过了这样的设置,或者有另一种方法来实现这些目标?
replica.fetch.max.bytes只能在经纪人级别设置。max.partition.fetch.bytes但是,您可以在消费者端设置:
服务器将返回的每个分区的最大数据量。记录由消费者批量获取。如果提取的第一个非空分区中的第一个记录批次大于此限制,该批次仍将被返回以确保消费者可以取得进展。代理接受的最大记录批量大小是通过 message.max.bytes (代理配置)或 max.message.bytes (主题配置)定义的。请参阅 fetch.max.bytes 以限制消费者请求大小。
请注意,这是每个分区的配置,这意味着如果您将其设置为较大的数字,那么如果您也有很多分区,它将消耗大量内存。