pykafka的SessionExpiredError、PartitionOwnedError、ConsumerStoppedException

这两天一直在使用pykafka做简单的开发,但是这个看起来简单的开发任务中却遇到了几个问题,在网上找了一下好像关于这几个问题的讨论(回答)不多,在这里记录一下,为其他遇到类似问题的同学提供一些思路。

任务简化一下就是多个输入把日志信息输入kafka队列中,为了提高处理的效率在队列的另外一端开启多个进程处理日志信息,也就是对一个topic有多个consumers,所以理所当然的用到了kafka的balancedconsumer

关于Kafka的Python包有kafka-python、pykafka,网上说kafka-python对kafka的balancedconsumer支持不太好所以我选择了pykafka。pykafka的文档对于新手入门介绍的很少,就两个简单的示例,看了一下入门教程然后大致浏览了一遍常用的函数的文档就开始上手写代码了。本身我对Kafka的了解也有限也就是这几天突击了解了一下,没有详细的看过Kafka的完整document,这些也就为后面的问题埋下了隐患。
1. SessionExpiredError
consumer.consume()得到一条日志以后我需要做一些正则表达式的处理,在自测的过程中偶尔会出现SessionExpiredError的错误,一看这个异常的名称大概就知道这是因为客户端和zookeeper之间的session过期导致的。
从一些文档中看到consumer会周期的发送heartbeat给zookeeper以保持链接,那么我理解无论我处理消息的时间多长都应该不会导致session过期的,我浏览了一遍pykafka的代码好像就没有看到consumer周期发送heartbeat的这部分代码,这块可能还需要后续再确认一下。
上面提到session过期的可能原因就是我处理消息的时间太长导致的,所以考虑只要增加一下session的过期时间应该就能解决,而且从Kafka的文档中我也找到了session.timeout.ms这个参数,但是在

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值