限制Kafka消费者的记录数量

3
在Kafka 0.9.0消费者中,限制我们接收的记录数量是否可能?

你想要限制批处理中的记录数量吗?比如限制消费者一次只获取10条消息?还是在消费速度方面进行限制?比如每分钟只获取100条消息? - Morgan Kenyon
就像限制消费者一次只能获取10条消息一样。 - BlitzKrieg
2个回答

3
您要查找的配置是:

max.poll.records

这个设置确定了在一次 poll() 调用中返回的最大记录数。


0

浏览经纪人配置。似乎只有基于字节控制记录的配置选项。

replica.fetch.max.bytes
replica.fetch.min.bytes

所有与消息相关的其他配置选项似乎也都是以字节为单位表达的。我相信设计成这样的原因之一是为了提供更统一的消息消费控制。字节是衡量消息的一种非常具体的方式。由于消息在字节数上可能有很大的变化,试图按照消息数量来衡量会导致不太一致的行为。

例如,如果您有10条每个100字节的消息,则总大小将为1,000字节。如果您有第二组10条每个100,000字节的消息,则总大小将为1,000,000字节(1MB)。

按消息数量配置Kafka将完全相同地处理这两种情况。但由于大小差异如此之大,它们可能不应该被完全相同地处理。


我曾考虑过这个选项,但正如你所提到的,我的消息大小是不同的,因此在这里并不适用。 - BlitzKrieg
我不太明白你在说什么?我的观点是你应该基于字节而不是消息数量来构建东西。你同意这个观点还是仍然想基于消息数量来构建东西? - Morgan Kenyon
我的意思是,我的消息大小差异很大,很难根据代理配置中的字节数限制我在消费者端接收的消息数量。 - BlitzKrieg
我同意你的观点。Kafka似乎没有提供你所寻找的选项。因此,我不知道是否有可能实现你的用例。 - Morgan Kenyon
限制记录数量的原因是什么?如果原因是你不想一次消耗太多内存,那么replica.fetch.max.bytes是正确的选项。 - Sahil Chhabra

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接