如题,我在生产者端每 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 的大佬帮忙解答一二
1
wineway 2021-07-20 10:54:50 +08:00 via iPhone
你隔十秒 poll 一次呗……
|
2
kerb15 OP @wineway 我是在 spring boot 上直接用注解实现的消费者,当然如果实在不行确实可以用原生 api 的方式实现
|
3
zls3201 2021-07-20 13:30:17 +08:00
|
4
ipwx 2021-07-20 14:00:25 +08:00
这是客户端行为啊。你什么语言什么库
|
5
est 2021-07-20 14:56:30 +08:00
有 2 个 partition ?
|