Apache Kafka Producerの使い方


まず、KafkaのJavaクライアントをプロジェクトに追加します。Mavenを使用している場合は、pom.xmlファイルに以下の依存関係を追加します。

<dependency>
    <groupId>org.apache.kafka</groupId>
    <artifactId>kafka-clients</artifactId>
    <version>2.8.0</version>
</dependency>

次に、Kafkaのブローカーのアドレスとポート番号を指定してプロデューサーを作成します。

import org.apache.kafka.clients.producer.*;
import java.util.Properties;
public class KafkaProducerExample {
    public static void main(String[] args) {
        Properties props = new Properties();
        props.put("bootstrap.servers", "localhost:9092");
        props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");
        props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");
        Producer<String, String> producer = new KafkaProducer<>(props);
        String topic = "my_topic";
        String key = "my_key";
        String value = "Hello, Kafka!";
        ProducerRecord<String, String> record = new ProducerRecord<>(topic, key, value);
        producer.send(record, new Callback() {
            @Override
            public void onCompletion(RecordMetadata metadata, Exception exception) {
                if (exception != null) {
                    exception.printStackTrace();
                } else {
                    System.out.println("Message sent successfully. Offset: " + metadata.offset());
                }
            }
        });
        producer.close();
    }
}

上記の例では、bootstrap.serversプロパティにはKafkaブローカーのアドレスとポート番号を指定します。key.serializervalue.serializerプロパティには、キーと値のシリアライザを指定します。ProducerRecordオブジェクトを作成し、send()メソッドを使用してメッセージを送信します。コールバック関数内でメッセージの送信結果を処理することもできます。

これは基本的なKafkaプロデューサーの例です。さらに、メッセージのバッチ処理、パフォーマンスチューニング、エラーハンドリングなど、より高度な設定方法やコード例もあります。Apache Kafkaの公式ドキュメントやコミュニティのリソースを参照して、さまざまな方法を学習してください。