私の理解によると、解凍は消費者自身によって処理されます。公式wikiページで述べたように
The consumer iterator transparently decompresses compressed data and only returns an uncompressed message
この記事にあるように、消費者の仕組みは次のとおりです。
コンシューマーにはバックグラウンドの「フェッチャー」スレッドがあり、ブローカーから 1MB のバッチでデータを継続的にフェッチし、それを内部ブロッキング キューに追加します。コンシューマ スレッドは、このブロッキング キューからデータをデキューし、メッセージを解凍して繰り返し処理します。
また、エンドツーエンドのバッチ圧縮の下のドキュメントページにも、次のように書かれています
メッセージのバッチをまとめて圧縮し、この形式でサーバーに送信できます。このメッセージのバッチは圧縮形式で書き込まれ、ログに圧縮されたままになり、コンシューマーによってのみ解凍されます。
したがって、解凍部分はコンシューマー自体で処理されるようです。必要なのは、compression.codec
プロデューサーの作成中に ProducerConfig 属性を使用して有効な/サポートされている圧縮タイプを提供することだけです。消費者側での解凍のアプローチを示す例や説明が見つかりませんでした。間違っている場合は修正してください。