マイクロサービス アーキテクチャでは、システムのスケーラビリティと復元力を確保するためにサービス間の非同期通信が重要です。分散ストリーミング プラットフォームである Apache Kafka は、この目的で最も人気のあるツールの 1 つになっています。この投稿では、サービス間のメッセージ交換を効率的かつ堅牢に管理するために、Kafka をセットアップして Spring Boot と統合する方法を検討します。
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 の構成に進むことができます。
<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
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); } }
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 サイトの他の関連記事を参照してください。