假设我有一个服务,它通过kafka-rest-proxy使用消息,并始终在同一个使用者组上。我们还要说,它正在消耗一个有一个分区的主题。当服务启动时,它会在kafka-rest-proxy中创建一个新的使用者,并使用生成的使用者url直到服务关闭。当服务恢复时,它将在kafka-rest-proxy中创建一个新的消费者,并使用新的url(和新消费者)进行消费。卡夫卡休息代理消费者创建
我的问题
因为卡夫卡只能有每个分区最多一个消费者。当消费者重新启动时,在kafka和kafka-rest-proxy中会发生什么?即新的消费者是在卡夫卡休息代理中创建的,但旧的消费者没有机会被销毁。所以现在'n'消费者在'kafka-rest-proxy'中重新启动我的服务后有'n'个消费者,但其中只有一个正在被消费。我甚至能够消费我的新消费者的消息,因为消费者多于分区?
让我们更复杂一些,并说我的服务在同一个用户组和5个分区中有5个实例。 'n'重新启动服务的所有5个实例之后,我甚至会保证在不确保现有消费者适当销毁的情况下消费所有消息。即,在消费者创造期间,当消费者出门时,卡夫卡和卡夫卡休息代理人做了什么?
什么被认为是卡夫卡休息代理的最佳实践,以确保陈旧的消费者总是清理?你建议坚持消费者的网址?我应该强制重新启动一个kafka-rest-proxy,以确保在启动我的服务之前销毁现有的消费者?
*编辑* 我相信我的问题的一部分,此配置回答,但不是全部。
consumer.instance.timeout.ms - 消费者实例自动销毁之前的空闲时间量。 类型:int 默认:300000 重要性:低