ホームページ  >  記事  >  Java  >  Java API開発におけるリアルタイムメッセージ処理にApache Kafkaを使用する

Java API開発におけるリアルタイムメッセージ処理にApache Kafkaを使用する

WBOY
WBOYオリジナル
2023-06-18 09:08:421223ブラウズ

ビジネス ニーズの増大に伴い、リアルタイム メッセージ処理は多くの企業の重要なビジネス ニーズの 1 つになっています。 Apache Kafka は、大規模なリアルタイム メッセージ処理に適した、拡張性、可用性、パフォーマンスに優れた分散メッセージング システムです。 Java API 開発では、Kafka を使用してリアルタイムのメッセージ処理を行うことで、効率的なデータの送信と処理が可能になります。

この記事では、Java API 開発におけるリアルタイム メッセージ処理に Apache Kafka を使用する方法を紹介します。まず、Kafka の基礎知識と重要な概念を紹介します。それではJava API開発におけるKafkaの使い方を詳しく解説していきます。

1. Apache Kafka の概要

Apache Kafka は、LinkedIn によって開発されたメッセージング システムであり、大規模なリアルタイム情報処理の問題を解決するために使用できます。 Kafka は、高スループット、低遅延、高信頼性、スケーラビリティ、耐障害性を特徴としています。これは分散システムとして設計されており、複数のプロデューサーが 1 つ以上のトピックにメッセージを送信でき、複数のコンシューマーが 1 つ以上のトピックからのメッセージを消費できます。同時に、Kafka は非常に高いスループットでデータを処理し、リアルタイム データ ストリームを大規模に保存して処理できます。

Kafka では、メッセージはトピック (Topic) とパーティション (Partition) に編成されます。トピックは論理的にアプリケーションのメッセージ タイプに似ており、パーティションはトピックのサブパートであり、各パーティションは順序付けられたメッセージ キューです。このようにして、メッセージはトピックのパーティションに分散され、パーティション化を通じてロード バランシングとフォールト トレランスを実現できます。

2. Apache Kafka の基本概念

  1. ブローカー

Kafka クラスターは複数のブローカーで構成され、各ブローカーは Kafka サーバーです。 Broker は、Producer からメッセージを受信して​​ Consumer に送信し、メッセージをトピック パーティションに保存する役割も担います。

  1. トピック

トピックは、プロデューサーによって生成されたメッセージ カテゴリを識別するために使用される論理概念です。各トピックは複数のパーティションに分割でき、各パーティションは異なるブローカーに存在できます。

  1. Partition

Partition は Kafka のトピック内のサブパーティションであり、各パーティション内のメッセージは順序付けされています。

  1. プロデューサー

プロデューサーは、Kafka クラスターのブローカーにデータを送信するために使用できるプロデューサーです。同時に、プロデューサーはメッセージの送信を選択できます。指定されたパーティションに。

  1. Consumer

Consumer は、Kafka クラスターのブローカー上でメッセージを消費するコンシューマーです。複数のコンシューマが同じトピック パーティション内のメッセージを消費して、メッセージの負荷分散を実現できます。

  1. グループ ID

グループ ID は、コンシューマが属するグループを識別するために使用されます。同じグループ内のコンシューマは、1 つ以上のトピック パーティション内のメッセージを共同でコンシュームできます。トピック パーティション内のメッセージを消費できるのは、グループ内の 1 つのコンシューマのみです。

  1. Offset

Offset は、Consumer が消費したメッセージを識別するために使用されるオフセットです。 Kafka は、メッセージの順序を保証するために Offset を使用します。

3. Java API 開発での Apache Kafka の使用

Java API 開発では、リアルタイム メッセージ処理に Kafka の Java API を使用できます。まず、Kafka の Java API jar パッケージをプログラムに導入し、次に Java コードを記述する必要があります。

  1. Producer

Java API では、KafkaProducer クラスを使用して、Kafka クラスターのブローカーにメッセージを送信できます。以下は、単純なプロデューサー実装コードです:

    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");
 
    KafkaProducer<String, String> producer = new KafkaProducer<String, String>(props);
 
    ProducerRecord<String, String> record = new ProducerRecord<String, String>("mytopic", "key", "value");
    producer.send(record);
 
    producer.close();

上記のコードでは、まず KafkaProducer オブジェクトを構築し、Kafka クラスターのブローカー アドレスを設定してから、メッセージの Key および Value シリアル化メソッドをそれぞれ設定します。最後に、プロデューサー レコード (ProducerRecord) が作成され、Kafka クラスターに送信されます。

  1. Consumer

Java API では、KafkaConsumer クラスを使用して、Kafka クラスターからのメッセージを消費できます。以下は、単純なコンシューマ実装コードです:

    Properties props = new Properties();
    props.put("bootstrap.servers", "localhost:9092");
    props.put("group.id", "mygroup");
    props.put("key.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");
    props.put("value.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");
 
    KafkaConsumer<String, String> consumer = new KafkaConsumer<String, String>(props);
 
    List<String> topics = new ArrayList<String>();
    topics.add("mytopic");
    consumer.subscribe(topics);
 
    while (true) {
        ConsumerRecords<String, String> records = consumer.poll(1000);
        for (ConsumerRecord<String, String> record : records)
            System.out.printf("offset = %d, key = %s, value = %s%n", record.offset(), record.key(), record.value());
    }

上記のコードでは、最初に KafkaConsumer オブジェクトを構築し、Kafka クラスターのブローカー アドレス、グループ ID、およびキーと値の逆シリアル化メソッドを設定します。メッセージ。次に、トピックを指定してトピックをサブスクライブし、最後に、poll() メソッドを使用して Kafka クラスターからのメッセージを消費します。

4. 概要

この記事では、Apache Kafka の基本概念と、Java API 開発におけるリアルタイム メッセージ処理に Kafka を使用する方法を紹介します。実際の開発では、実際のビジネス ニーズに基づいて、適切な Kafka 構成と開発方法を選択できます。 Kafka は、高スループット、低遅延、高信頼性、拡張性、耐障害性を特徴としており、大規模なリアルタイム情報処理において明らかな利点を持っています。

以上がJava API開発におけるリアルタイムメッセージ処理にApache Kafkaを使用するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。