次のコードを検討してください。
public static long Offset = 0L;
FetchRequest req = new FetchRequest(KafkaProperties.topic, 0, Offset,10485760);
ByteBufferMessageSet messageSet = simpleConsumer.fetch(req);
問題は、最後のオフセットを取得し、変数を元に戻してOffset
、Kafka から次のデータのバッチを読み取る方法です。
更新: データを印刷するとき:
for (MessageAndOffset messageAndOffset : messageSet) {
System.out.println(messageAndOffset);
}
出力は次のようになります。
MessageAndOffset(message(magic = 1, attributes = 0, crc = 2000130375, payload = java.nio.HeapByteBuffer[pos=0 lim=176 cap=176]),296215)
MessageAndOffset(message(magic = 1, attributes = 0, crc = 956398356, payload = java.nio.HeapByteBuffer[pos=0 lim=196 cap=196]),298144)
....
....
MessageAndOffset(message(magic = 1, attributes = 0, crc = 396743887, payload = java.nio.HeapByteBuffer[pos=0 lim=179 cap=179]),299136)
ドキュメントによると、最後の数字はオフセットです
MessageAndOffset(message: Message, offset: Long)
つまり、上記の場合、最後のオフセット読み取りは299136