我想将Kafka集群设置为仅允许在特定主题上发送大型消息。从docs中可以看到,如果我想在整个集群级别上做到这一点,可以通过设置message.max.bytes
来允许代理和replica.fetch.max.bytes
上的大量数据来实现。为了允许它被复制,但是我的理解是,这将增加群集中所有主题的内存使用量,而不仅仅是我知道可以接收大消息的主题。还有一个主题级别的设置max.message.bytes
,用于控制消息的最大大小,但是我看不到一个主题级别的设置,用于控制复制操作的最大数据大小。这些紧密联系的设置之一在主题级别上不可配置,这似乎很奇怪。也许我错过了这种设置,或者还有另一种方法可以实现这些目标?
答案 0 :(得分:0)
replica.fetch.max.bytes
只能在代理级别设置。但是,您可以在用户端设置max.partition.fetch.bytes
:
服务器将返回的每个分区的最大数据量。 记录由消费者分批提取。如果第一条记录 提取的第一个非空分区中的批处理大于 在此限制下,批次仍将退回以确保 消费者可以进步。接受的最大记录批量大小 代理是通过message.max.bytes(代理配置)定义的,或者 最大消息字节数(主题配置)。请参阅fetch.max.bytes以限制 消费者要求的大小。
请注意,这是一个按分区的配置,这意味着如果将其设置为较大的数量,则如果您也有很多分区,它将消耗大量内存。