kafka 如何实现每 10 秒拉一次数据?

2021-07-20 10:45:11 +08:00
 kerb15

如题,我在生产者端每 0.5 秒发送一个消息,消息大约 4KB 一个

在消费者端配置了下面两个参数,以保证消费者每 10 秒能够回调一次

fetch-min-bytes = Integer.MAX_VALUE (当一次拉取请求的数据小于这个值,就会等待直到满足这个参数,这里我设到最大值)
fetch-max-wait-ms: 10000 (如果等待超过这个值就直接返回,这里设为 10 秒)

同时我是用批量消费的方式进行的,每次回调都会打印一次时间间隔观察实际消费情况,发现消费者在每 10 秒的时候总会拉取两次,但我希望它只拉取一次

KafkaConsumer--->==:10s size:6
KafkaConsumer--->==:0s size:14
KafkaConsumer--->==:9s size:7
KafkaConsumer--->==:0s size:13

所以比较疑惑是触发了哪个参数导致它会多回调一次

btw,我尝试过把下面这些参数都调到最大,但都无济于事

send.buffer.bytes = Integer.MAX_VALUE
receive.buffer.bytes = Integer.MAX_VALUE
max.partition.fetch.bytes Integer.MAX_VALUE
fetch.max.bytes = Integer.MAX_VALUE
max.poll.records = Integer.MAX_VALUE

有没有熟悉 kafka 的大佬帮忙解答一二

1567 次点击
所在节点    Kafka
5 条回复
wineway
2021-07-20 10:54:50 +08:00
你隔十秒 poll 一次呗……
kerb15
2021-07-20 10:58:04 +08:00
@wineway 我是在 spring boot 上直接用注解实现的消费者,当然如果实在不行确实可以用原生 api 的方式实现
zls3201
2021-07-20 13:30:17 +08:00
ipwx
2021-07-20 14:00:25 +08:00
这是客户端行为啊。你什么语言什么库
est
2021-07-20 14:56:30 +08:00
有 2 个 partition ?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/790553

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX