PR:この記事にはアフィリエイトリンクが含まれます。
Apache Kafkaはサービス間でイベントを受け渡し、蓄積し、必要なアプリケーションへ届ける仕組みです。Javaでイベント駆動の開発やストリーム処理に取り組むなら、Kafkaが何を担うのかを先に押さえましょう。
ProducerとConsumerの基礎、Kafka Streamsの集計、障害時の扱いまで、実務で考えることは幅広いものです。
早見表
| 書籍 | 扱う範囲 | 向いている読者 | 参考価格 |
|---|---|---|---|
Apache Kafkaをはじめる | Producer、Consumer、トランザクション、Connect、Kafka Streams | 基礎を短くつかみたい人 | 2,200円(税込) |
Kafka in Action | Javaアプリ、Connect、メッセージキュー、管理 | 実例を通じてKafkaを学ぶ開発者 | — |
Kafka Streams in Action, Second Edition | Streams API、スキーマ、テスト、監視 | Javaでストリーム処理を組む人 | — |
Kafka: The Definitive Guide, 2nd Edition | 配信保証、セキュリティ、運用、監視 | Kafka全体を広く参照したい人 | — |
Kafkaの基礎を手早く知りたい人には『Apache Kafkaをはじめる』をおすすめします。JavaのProducerやConsumerを実例から学ぶなら、『Kafka in Action』を選ぶとよいでしょう。
Kafka Streamsを中心に学ぶなら第2版、運用全般を広く参照したいなら英語の『The Definitive Guide』をおすすめします。
『Apache Kafkaをはじめる』の公式希望小売価格は税込2,200円です。実売価格は時期や店によって変わるため、購入時に確認してください。
Kafkaの役割
Kafkaではイベントをトピックに記録し、必要なサービスがそれぞれ読み取ります。たとえば注文サービスが注文を発行し、在庫サービスと通知サービスが同じ出来事を別々に処理する構成です。
受け手が一時停止してもKafkaはイベントを保持し、復旧後に読み進められます。送信側と受信側を直接つながずに済み、処理サービスの追加にも対応しやすくなります。
トピックはパーティションに分かれ、複数のConsumerで処理を分担します。同じキーのイベントは同じパーティションに入り、そこで順序が保たれます。ただしトピック全体の順番が保証されるわけではありません。
Java連携
Javaアプリからイベントを送るのがProducer、受け取るのがConsumerです。注文番号などをキーに設定すると、同じ注文のイベントを同じパーティションへ送り、そこで順序を保ちやすくなります。
Producerは送信に失敗すると再試行します。再送で二重登録が起きない設計が欠かせません。金額や在庫を更新する処理では、イベントIDで重複を判定できます。
Consumerは読み取り位置をオフセットとして管理します。処理結果を保存してからオフセットを確定すると、障害後に同じイベントを再処理する場合があります。保存先も冪等にしておけば、重複処理による影響を抑えられます。
同じConsumerグループでは、パーティション単位で処理を複数のインスタンスに分けられます。インスタンスをパーティション数より大幅に増やしても並列度は上がりません。負荷と分割数を見ながら、必要な並列度を設定します。
Streams処理
Kafka StreamsはKafkaのイベントを連続処理するJavaライブラリです。Javaアプリへ組み込めるため、別のストリーム基盤を置かずに読み取りから変換、集計、書き戻しまでを実装できます。
KStreamは注文やクリックのような個々のイベントを表し、KTableはキーごとの最新状態を表します。顧客情報をKTableで扱う例がわかりやすいでしょう。イベント履歴と現在状態の違いをつかむと、処理の見通しがよくなります。
時間窓を使えば、直近5分の注文数や店舗別売上を継続的に集計できます。業務時刻と処理時刻がずれることもあり、遅れて届いたイベントによって締め後に集計値が変わる場合もあります。
結合や集計では処理状態の保持が必要です。Kafka Streamsは状態ストアを利用し、再起動後の復元やキーの再分割も設計時に考慮します。開発環境と本番環境の挙動を揃えると、環境間の差を抑えられます。
信頼性と運用
Kafkaではイベントの重複を想定します。Consumerがデータベースへ書いた直後に停止すると、オフセット確定前のイベントが再配信されます。同じ処理を再実行しても結果が壊れない仕組みが必要です。
Kafkaのトランザクションを使うと、Kafkaから読んだイベントとKafkaへの書き戻しをまとめられます。外部データベースや決済APIまで自動で一体化するわけではないため、連携先にも冪等性を持たせます。
繰り返し失敗するイベントは無制限に再試行させず、エラー内容とともに隔離できます。元のキーや発生時刻を残せば調査や再処理がしやすくなり、正常なConsumerの滞留も防げます。
本番ではConsumerの遅れや処理失敗、パーティションの偏りを監視します。認証・認可や暗号化、データ保持期間も運用設計に含め、障害時に再開する位置まで手順を決めておきましょう。
Kafkaの入門書
『Apache Kafkaをはじめる』は佐々木 健太朗著、2022年9月16日発行の印刷版です。106ページで、ProducerとConsumerからトランザクション、Kafka Connect、Kafka Streamsまで扱います。
Kafkaに初めて触れる開発者が、用語や部品の関係をつかむのに役立ちます。基本操作とKafkaアプリ開発の第一歩を短く学べる本です。
参考価格は税込2,200円。ProducerとConsumerの役割を短く押さえたい人には、Kafka学習の最初の一冊としておすすめです。
Javaで実践
『Kafka in Action』はDylan Scott、Viktor Gamov、Dave Kleinの共著で、2022年1月刊、272ページです。Kafkaの事前知識は不要とされ、JavaアプリケーションでProducerとConsumerを扱います。
Kafka Connectによるデータ移動や、Kafkaをメッセージキューとして使う例、基本的な管理作業も登場します。実際の用途を扱う例と演習があり、アプリ側の実装を考えたい人に実用的です。
印刷版には電子書籍が付き、電子書籍単体の販売形態もあります。Javaのイベント処理とKafkaの基本操作を学びたい人には、この本をおすすめします。
Streamsを深掘り
『Kafka Streams in Action, Second Edition』はWilliam P. Bejeck Jr.著、2024年4月刊の504ページです。Java開発者向けに、KStream APIとProcessor APIによるストリーミングアプリの設計を扱います。
Schema Registryでのデータ互換性管理、Kafka Connect、ksqlDBに加え、Spring連携、テスト、監視、デバッグまでカバーします。状態を持つ処理を開発・運用したい人に役立つ内容です。
Kafkaやストリームアプリの前提知識がなくても対象とされています。504ページと内容が充実しているため、腰を据えて学ぶ本です。Javaでストリーミング処理を実装するなら、実務の課題に合わせて参照できます。
運用を俯瞰
『Kafka: The Definitive Guide, 2nd Edition』はGwen Shapira、Todd Palino、Rajini Sivaram、Krit Pettyの共著で、2021年11月刊、485ページです。Producer・Consumerの実装から信頼性や配信保証まで広く扱います。
Avroを含むスキーマ、トランザクション、セキュリティ、運用、監視、ストリーム処理を横断して参照できます。Kafkaを本番で支える要素をまとめて押さえたい開発者におすすめです。
本文は英語です。英語の技術書を読む習慣があり、設定や配信保証、運用上の判断を一冊で調べたい人には参照書としておすすめします。日本語の読みやすさを優先する人は、先に国内の入門書で用語を押さえると読み進めやすくなります。
結論
Kafkaが初めてなら『Apache Kafkaをはじめる』でProducer、Consumer、Streamsの位置関係をつかみ、Javaの具体例へ進むなら『Kafka in Action』を選ぶのが堅実です。前者の参考価格は税込2,200円で、実売は時期や店によって変わります。
Javaで集計や状態管理を実装する人には『Kafka Streams in Action, Second Edition』をおすすめします。Schema Registry、テスト、監視まで扱うため、開発後の運用を見据えた学習にも使えます。
配信保証やセキュリティ、本番運用もまとめて確認したい開発者には『Kafka: The Definitive Guide』を参照書としておすすめします。業務の中心がProducer・ConsumerかStreamsかを確認し、その範囲を扱う一冊から始めると学んだ内容を現場の処理に当てはめやすくなります。
Amazon の PC をスコア化してみた
Amazonにある8〜14インチの小型WindowsタブレットやノートPCを、スペック別にスコア化して比較・ランキング。





