Apache Kafka
トピックには通常のトピックとコンパクト化されたトピックの2種類がある。通常のトピックにおいては保持時間または容量上限を設定することができる。指定された保持時間よりも古いレコードが存在する場合やパーティションの容量上限を超えた場合には、ストレージ領域を確保するために古いデータが削除される。コンパクト化されたトピックでは、あるキーを持つメッセージが送られてきた際に、同じキーを持つメッセージの更新としてそのメッセージを扱う。メッセージは期限切れや容量超過などの理由により削除されることはなく、特定のキーに対しNULL値を持ついわゆるtombstone(墓標)メッセージを書くことで初めて削除される。
Kafkaには、5つの主要なAPIがある。
メッセージの公開を行うためのProducer API
トピックをサブスクライブし、メッセージのストリームを処理するためのConsumer API
既存のアプリケーションにトピックをリンクさせることができるConnector API
入力されたストリームのメッセージを変換し別のストリームとして出力するためのStreams API
トピック、ブローカー、およびその他のKafkaオブジェクトを管理するためのAdmin API
Consumer APIとProducer APIは、基盤となるメッセージングプロトコルによってKafkaのコア機能から切り離されている。これにより、Consumer APIとProducer APIと互換性のあるAPIをJava以外の言語でも性能を保ったまま実装することができる。Apache Kafkaプロジェクトは、このようなサードパーティ製のAPIのリストを管理している。