用例是我的消费者偶尔做一些需要很长时间的i/o工作。我正在使用Spring2.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条答案
按热度按时间new9mtju1#
我知道的唯一解决方案是调整这两个属性(或者减少侦听器所花费的时间)。