在缓慢的消费者卡夫卡上处理背压并避免重新平衡

时间:2018-12-11 09:35:42

标签: java apache-kafka spring-cloud-stream spring-kafka

用例是我的用户偶尔执行一些I / O工作,这需要很长时间。我正在使用Spring 2.0.1和<spring-cloud.version>Elmhurst.RELEASE</spring-cloud.version</spring-cloud.version>

最初的解决方案是将max.poll.interval.ms设置为更高的值,将max.poll.records设置为低于默认值的值。这确实减少了重新平衡的次数,但是在某些情况下,I / O操作花费的时间比max.poll.interval.ms长,并且重新平衡的成本很高,从而产生了相当大的滞后。如果没有重新平衡,即使考虑到I / O持续时间达到峰值的情况,处理也会及时完成。

我可以使用什么设置和代码或体系结构来使系统既响应(在实际上阻止了使用者时重新平衡)又可以响应,而当一个使用者花费异常长的时间来处理消息时又不会触发重新平衡?

1 个答案:

答案 0 :(得分:1)

我知道的唯一解决方案是调整这两个属性(或减少侦听器花费的时间)。