마이크로서비스 아키텍처에서 서비스 간 비동기 통신은 시스템 확장성과 복원성을 보장하는 데 매우 중요합니다. 분산 스트리밍 플랫폼인 Apache Kafka는 이러한 목적을 위해 가장 널리 사용되는 도구 중 하나가 되었습니다. 이 게시물에서는 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!