我有两个不同的应用程序,它们具有不同的消费者 ID 和组 ID,如下所示。
Application 1 :
Consumer id = consumer-1
Consumer group id = consumer-group-1
Application 2 :
Consumer id = consumer-2
Consumer group id = consumer-group-2
消费者 1 和消费者 2 都被手动分配到同一个主题分区(假设主题名称 = 测试和分区 id = 0)并且独立地消费消息。现在我的问题是,由于assign()
将失去对动态分区分配和消费者组协调的控制,Kafka 如何存储/识别消费者 1 和消费者 2 的最后提交的偏移量。有时我会看到提交失败并显示如下消息。
{"severity":4,"fac":"COMMITFAIL","message":"[thrd:main]: Offset commit (cgrp auto commit timer) failed for 0/1 partition(s): test[0]@8747(Broker: Unknown member)"}
这是因为我使用了两个不同的消费者(在两个不同的应用程序中)手动分配给同一个主题和分区 ID?是否允许使用手动分配给同一主题和分区的两个消费者?
我还怀疑我的消费者的最大轮询/会话超时间隔是否太小。但是为了测试,我评论了我所有的处理逻辑,以便我只使用并写一个日志,但我仍然看到上面的提交失败错误。