V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
kerb15
V2EX  ›  Kafka

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

  •  
  •   kerb15 · 2021-07-20 10:45:11 +08:00 · 1599 次点击
    这是一个创建于 1248 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如题,我在生产者端每 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 的大佬帮忙解答一二

    5 条回复    2021-07-20 14:56:30 +08:00
    wineway
        1
    wineway  
       2021-07-20 10:54:50 +08:00 via iPhone
    你隔十秒 poll 一次呗……
    kerb15
        2
    kerb15  
    OP
       2021-07-20 10:58:04 +08:00
    @wineway 我是在 spring boot 上直接用注解实现的消费者,当然如果实在不行确实可以用原生 api 的方式实现
    zls3201
        3
    zls3201  
       2021-07-20 13:30:17 +08:00
    ipwx
        4
    ipwx  
       2021-07-20 14:00:25 +08:00
    这是客户端行为啊。你什么语言什么库
    est
        5
    est  
       2021-07-20 14:56:30 +08:00
    有 2 个 partition ?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5374 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 06:57 · PVG 14:57 · LAX 22:57 · JFK 01:57
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.