flink消费rabbitmq,设置prefetch count不生效有人碰到过吗
楼主你好,不生效的原因,你可以从这方面入手: prefetch_count生效的条件和特性(从参数设置的一些demo和源码上感知): prefetch_count参数仅仅在basic.consume的autoAck参数设置为false的前提下才生效,也就是不能使用自动确认,自动确认的消息没有办法限流。 basic.consume如果在非自动确认模式下忘记了手动调用basic.ack,那么prefetch_count正是未ack消息数量的最大上限。 prefetch_count是由RabbitMQ服务端控制,一般情况下能保证各个消费者线程中的未ack消息分发是均衡的,这点笔者猜测是consumerTag起到了关键作用。
我觉得这是因为RabbitMQ的prefetch count只对每个消费者有效,而Flink消费RabbitMQ时,会创建多个消费者,每个消费者的prefetch count都是默认值1,所以设置prefetch count不会生效。 要解决这个问题,你可以在Flink消费RabbitMQ时,设置每个消费者的prefetch count,这样就可以控制每个消费者一次从队列中拉取的消息数量了。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。