2016-08-11 9 views
2

私は、Javaを使用したKafkaのコンパクトトピックに関する最小の実例を実装しようとしています。私は圧縮がうまくいっていますが、kafkaのドキュメントに記載されているように、キーとヌル値を使ってメッセージを書き込むと、削除が起こることはありません。Kafka:保持 "compact"のトピックからメッセージを削除する

使用するライブラリのバージョン:カフカ-クライアント-0.10.0.0.jar

ここでは、動作を再現するJavaクラスの要旨です: https://gist.github.com/anonymous/f78184eaeec3ee82b15182aec24a432a

はさらに、ドキュメントコンサルティング、私は次のように使用しました可能な限り迅速でキックする圧縮のためのトピックレベルの設定:server.properties側で

min.cleanable.dirty.ratio=0.01 
cleanup.policy=compact 
segment.ms=100 
delete.retention.ms=100 

、念のために:

log.retention.check.interval.ms=100 
log.cleaner.delete.retention.ms=100 
log.cleaner.enable=true 
log.cleaner.min.cleanable.ratio=0.01 

このクラスを実行すると、圧縮が機能することが示されます。トピックには同じキーを持つメッセージが1つしかありません。しかし、私はまだ私の意見で削除されているはずの "null"値を持つメッセージを参照してください。

[2016-08-11 12:30:21,032] INFO Cleaner 0:ログ圧縮テスト-0のセグメント15をクリーニングしています。 :29:52CEST2016)を0にし、削除を維持する。 (kafka.log.LogCleaner)

"削除を保持する"理由を知っている人はいますか?関連する設定オプションがありませんか?私は正しい方法で "ヌル"を書いていますか?

アイデアをいただければ幸いです。前もって感謝します!

UPDATE:ヴァルretainDeletes = old.lastModified> により設定された「保持が削除されます」と

[2016-08-15 12:44:57,412] INFO Cleaner 0: Cleaning log compaction-test-0 (discarding tombstones prior to Mon Aug 15 12:44:40 CEST 2016)... (kafka.log.LogCleaner) 
[2016-08-15 12:44:57,412] INFO Cleaner 0: Cleaning segment 0 in log compaction-test-0 (last modified Mon Aug 15 12:44:41 CEST 2016) into 0, retaining deletes. (kafka.log.LogCleaner) 
[2016-08-15 12:44:57,412] INFO Cleaner 0: Cleaning segment 15 in log compaction-test-0 (last modified Mon Aug 15 12:44:41 CEST 2016) into 0, retaining deletes. (kafka.log.LogCleaner) 
[2016-08-15 12:44:57,413] INFO Cleaner 0: Cleaning segment 16 in log compaction-test-0 (last modified Mon Aug 15 12:44:56 CEST 2016) into 0, retaining deletes. (kafka.log.LogCleaner) 

:有益なコメントを調査した後、私は0.10.0.1にアップグレードし、クリーナーログに次の出力を見つけましたdeleteHorizo​​nMs 問題のセグメントの最終更新日は、削除の地平線より少し遅れているようですが、私の最小限の例では削除は起こりません。

ただ、この問題は、0.10.1で修正されました...今、これに対処するための設定やテストを調整する方法

+0

これはバグかもしれないので、この動作を見た特定のバージョンを共有すると役立ちます。 –

+0

技術的には、最後のクリーンセグメントの最終変更時刻とdelete.retention.msの値に基づいてセグメントを破棄する時間ではないので、「保持削除」が表示されます。 –

+0

もちろん@GwenShapira、良い点、編集の質問。 – Jannixx

答えて

関連する問題