我只使用了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和消费者之间存在通信问题。消费者阅读的最后一条信息是偏移量50。这意味着我无法可靠地识别主题中最后提交的消息。
我用了其他方法。
seekToEnd() - took me to offset#200
endOffsets() - took me to offset#200
有没有一种方法可以可靠地获取Kafka制作人提交的消息(就我而言, Offset#196
)
暂无答案!
目前还没有任何答案,快来回答吧!