• 消费者故障,出现活锁问题如何解决?


    出现活锁的情况是它持续的发送心跳但是没有处理为了预防消费者在 

    这种情况下一直持有分区我们使用 max.poll.interval.ms 活跃检测机制在此 

    基础上如果你调用的 poll 的频率大于最大间隔则客户端将主动地离开组 

    便其他消费者接管该分区发生这种情况时你会看到 offset 提交失败调用 

    commitSync()引发的 CommitFailedException)。这是一种安全机制保障 

    只有活动成员能够提交 offset。所以要留在组中你必须持续调用 poll。

    消费者提供两个配置设置来控制 poll 循环

    max.poll.interval.ms:增大 poll 的间隔可以为消费者提供更多的时间去处理返 

    回的消息调用 poll(long)返回的消息通常返回的消息都是一批)。缺点是此值 

    越大将会延迟组重新平衡

    max.poll.records:此设置限制每次调用 poll 返回的消息数这样可以更容易的 

    预测每次 poll 间隔要处理的最大值通过调整此值可以减少 poll 间隔减少重 

    新平衡分组的 

    对于消息处理时间不可预测地的情况这些选项是不够的处理这种情况的推荐 

    方法是将消息处理移到另一个线程中让消费者继续调用 poll。 但是必须注意确 

    保已提交的 offset 不超过实际位置另外你必须禁用自动提交并只有在线程 

    完成处理后才为记录手动提交偏移量取决于你)。 还要注意你需要 pause  

    停分区不会从 poll 接收到新消息让线程处理完之前返回的消息如果你的处 

    理能力比拉取消息的慢那创建新线程将导致你机器内存溢出)。

    Java Program!
  • 相关阅读:
    Linux常用命令及示例(全)
    linux下安装配置svn服务器
    Kafka、Redis和其它消息组件比较
    ORACLE定时备份方案
    mysql库表优化实例
    携程apollp快速部署DVE集群
    windows 安装Zookeeper 配置集群
    Ubuntu 18.04 LTS 修改Host,使用Host访问
    PowerShell因为在此系统中禁止执行脚本......
    常用第三方工具的Docker命令
  • 原文地址:https://www.cnblogs.com/programb/p/12995975.html
Copyright © 2020-2023  润新知