
如题,我在生产者端每 0.5 秒发送一个消息,消息大约 4KB 一个
在消费者端配置了下面两个参数,以保证消费者每 10 秒能够回调一次
fetch-min-bytes = Integer.MAX_VALUE (当一次拉取请求的数据小于这个值,就会等待直到满足这个参数,这里我设到最大值) feth-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 ex1gtnim7d 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 ? |