Kafka と Spring Boot を使用したメッセージング制御: 実践ガイド

王林
リリース: 2024-08-31 13:01:32
オリジナル
602 人が閲覧しました

Messaging Control with Kafka and Spring Boot: A Practical Guide

マイクロサービス アーキテクチャでは、システムのスケーラビリティと復元力を確保するためにサービス間の非同期通信が重要です。分散ストリーミング プラットフォームである Apache Kafka は、この目的で最も人気のあるツールの 1 つになっています。この投稿では、サービス間のメッセージ交換を効率的かつ堅牢に管理するために、Kafka をセットアップして Spring Boot と統合する方法を検討します。

  1. 環境のセットアップ コーディングを始める前に、開発環境をセットアップする必要があります。 Apache Kafka をまだインストールしていない場合は、Docker を使用して docker-compose.yml を作成して簡単にセットアップできます。
services:
  zookeeper:
    image: wurstmeister/zookeeper:3.4.6
    ports:
     - "2181:2181"
  kafka:
    image: wurstmeister/kafka:latest
    ports:
     - "9092:9092"
    environment:
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://localhost:9092
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
ログイン後にコピー

Kafka が起動して実行されたら、Spring Boot の構成に進むことができます。

  1. Spring Boot の構成 まず、新しい Spring Boot プロジェクトを作成します。必要な依存関係を pom.xml に追加できます。
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.kafka</groupId>
        <artifactId>spring-kafka</artifactId>
    </dependency>
</dependencies>

ログイン後にコピー

次に、Kafka に接続するように application.properties を構成します。

spring.kafka.bootstrap-servers=localhost:9092
spring.kafka.consumer.group-id=group_id
spring.kafka.consumer.auto-offset-reset=earliest

ログイン後にコピー
  1. メッセージプロデューサーの実装 Kafka トピックにメッセージを送信する単純な Spring Boot サービスを作成してみましょう。まず、KafkaProducer.java クラスを作成します。
import org.springframework.kafka.core.KafkaTemplate;
import org.springframework.stereotype.Service;

@Service
public class KafkaProducer {

    private final KafkaTemplate<String, String> kafkaTemplate;

    public KafkaProducer(KafkaTemplate<String, String> kafkaTemplate) {
        this.kafkaTemplate = kafkaTemplate;
    }

    public void sendMessage(String message) {
        kafkaTemplate.send("topic_name", message);
    }
}

ログイン後にコピー

REST エンドポイントを追加して、メッセージの送信をテストできます。

import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class MessageController {

    private final KafkaProducer kafkaProducer;

    public MessageController(KafkaProducer kafkaProducer) {
        this.kafkaProducer = kafkaProducer;
    }

    @PostMapping("/send")
    public void sendMessage(@RequestBody String message) {
        kafkaProducer.sendMessage(message);
    }
}

ログイン後にコピー
  1. メッセージコンシューマの実装 次に、これらのメッセージを受信するコンシューマを作成しましょう。 KafkaConsumer クラスは次のようになります。
import org.springframework.kafka.annotation.KafkaListener;
import org.springframework.stereotype.Service;

@Service
public class KafkaConsumer {

    @KafkaListener(topics = "topic_name", groupId = "group_id")
    public void consume(String message) {
        System.out.println("Message received: " + message);
    }
}

ログイン後にコピー

この実装では、メッセージが Kafka に送信されるたびに、コンシューマーがそれを受信して​​処理します。

Apache Kafka と Spring Boot の統合は、マイクロサービス アーキテクチャでの非同期通信を管理するための強力な組み合わせです。この投稿では、環境をセットアップし、プロデューサーとコンシューマーを作成し、アプリケーションをテストしました。これはほんの始まりにすぎません。Kafka は、アーキテクチャの回復力と拡張性をさらに高めるために探索できる他の多くの高度な機能を提供します。このチュートリアルがお役に立てば幸いです。ご質問やご提案がございましたら、お気軽に以下にコメントを残してください。

以上がKafka と Spring Boot を使用したメッセージング制御: 実践ガイドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート