在分区kafka中获取最后提交的消息

时间:2019-03-25 16:56:35

标签: apache-kafka kafka-consumer-api

我只使用kafka提供的一次语义。因此,我的生产者在事务中写了一条消息。当我的生产者发送第100条消息时,恰好在send()commitTransaction()之间;我杀死了生产者程序。

我阅读了本主题中的最后几条未提交的消息。

Consumer record offset - message number

0                     - 1
2                     - 2
196                   - 99  <- Last committed message by producer
198                   - 100 <- 100th message was sent but not committed

现在,当我以read_committed隔离级别运行使用者时。它精确地读取1-99条消息。但是为此,我阅读了整个主题。最终,我将在一个主题中存储数百万条消息。因此,阅读整个主题不是可取的。

此外,假设消费者正在从代理人轮询消息,并且与kafka borker和消费者存在一些通信问题。消费者读取的最后一条消息为offset#50。这意味着我无法可靠地确定主题中最后提交的消息。

我使用了其他方法,即

seekToEnd() - took me to offset#200
endOffsets() - took me to offset#200

有没有办法获得卡夫卡制作人可靠提交的消息?(在我的情况下为Offset#196

0 个答案:

没有答案