开发者社区 > 大数据与机器学习 > 实时计算 Flink > 正文

flink消费rabbitmq,设置prefetch count不生效有人碰到过吗

flink消费rabbitmq,设置prefetch count不生效有人碰到过吗

展开
收起
游客6vdkhpqtie2h2 2022-09-08 10:43:58 1249 0
2 条回答
写回答
取消 提交回答
  • 十分耕耘,一定会有一分收获!

    楼主你好,不生效的原因,你可以从这方面入手: prefetch_count生效的条件和特性(从参数设置的一些demo和源码上感知): prefetch_count参数仅仅在basic.consume的autoAck参数设置为false的前提下才生效,也就是不能使用自动确认,自动确认的消息没有办法限流。 basic.consume如果在非自动确认模式下忘记了手动调用basic.ack,那么prefetch_count正是未ack消息数量的最大上限。 prefetch_count是由RabbitMQ服务端控制,一般情况下能保证各个消费者线程中的未ack消息分发是均衡的,这点笔者猜测是consumerTag起到了关键作用。

    2023-01-30 11:12:39
    赞同 1 展开评论 打赏
  • 我觉得这是因为RabbitMQ的prefetch count只对每个消费者有效,而Flink消费RabbitMQ时,会创建多个消费者,每个消费者的prefetch count都是默认值1,所以设置prefetch count不会生效。 要解决这个问题,你可以在Flink消费RabbitMQ时,设置每个消费者的prefetch count,这样就可以控制每个消费者一次从队列中拉取的消息数量了。

    2023-01-17 17:31:21
    赞同 展开评论 打赏

实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。

相关产品

  • 实时计算 Flink版
  • 相关电子书

    更多
    RocketMQ Client-GO 介绍 立即下载
    RocketMQ Prometheus Exporter 打造定制化 DevOps 平台 立即下载
    基于 RocketMQ Prometheus Exporter 打造定制化 DevOps 平台 立即下载