新卡夫卡消费者忽略了最早的抵消



我有一个kafka主题(XYZ(,只有一个分区和一个使用者(C1(在RHEL6机器上运行。我已经将相同的设置复制到RHEL7机器上,并使用与C1相同的组id停止C1并启动新的使用者(C2(。C2能够连接、交换心跳消息并重复打印以下调试语句,但不能使用消息。收到零条记录。它使用";最早的";偏移重置,但似乎忽略了它。注意:所有使用者共享相同的代码版本。

日志:

Fetcher: [Consumer clientId=testclient-0, groupId=mcu] Fetch READ_UNCOMMITTED request at offset 1001 for partition XYZ-0 returned fetch data (error=none, highWaterMark=1001, lastStableOffset=1001, logStartOffset=10 ....

Adding READ_UNCOMMITTED request for partiion...Sending READ_UNCOMMITTED request for partition...Resetting offset for partition XYZ-0 to the committed offset 1001

我的问题是,为什么它将偏移量重置为最新的偏移量值,而不从一开始就使用消息。

以下是我试图解决的问题。

  1. 我能够使用来自同一集群上另一个主题的C2消费者的消息
  2. 我能够在具有完全相同配置的不同RHEL 6机器上使用来自另一个消费者C3的同一主题XYZ的消息
  3. 我使用了新的组id,但没有成功
  4. 先盯着消费者看后产生的信息,但没有成功。注:Kafka客户端版本1.0

如有任何帮助,我们将不胜感激。非常感谢。

在设置了以下jvm参数后,我能够修复它。

-Dorg.xerial.snappy.tempdir=/some/other/path/with/execpermissions/

我设置使用者的新主机没有/tmp-dir(默认值(的写入权限,这是打开snappy库所需的。还要确保/tmp为这些库留出了空间。具有旧使用者的RHEL6主机具有写入权限。没有在主题配置中设置压缩类型,因此默认情况下使用了snappy。我可以使用的其他主题将压缩类型设置为生产者,所以它不需要快速库,因此有效。该问题与RHEL 6或RHEL7版本无关。

更多信息:Kafka Broker为生成快速压缩消息的客户端抛出错误

最新更新