我们有一个应用程序,消费者读取消息,并且线程执行许多操作,包括在将消息生成到另一个主题之前进行数据库访问.在线程上消费和生成消息之间的时间可能需要几分钟.一旦向新主题生成消息,就会进行提交以指示我们已完成消费者队列消息的工作.因此,禁用自动提交.
我正在使用高级消费者,而我注意到的是zookeeper和kafka会话超时,因为在我们对消费者队列执行任何操作之前需要太长时间,所以每当线程返回以从消费者那里读取更多内容时,kafka最终会重新平衡队列并且在消费者在一段时间之后读取新消息之前它开始花费很长时间.
我可以将zookeeper会话超时设置得非常高,以免造成问题但是我必须相应地调整重新平衡参数,并且kafka将不会在其他副作用中提取新的消费者一段时间.
我有什么选择来解决这个问题?有没有办法让卡夫卡和动物园管理员心跳,让他们两个都开心?如果我使用简单的消费者,我还有这些相同的问题吗?