[java] Spring Framework를 이용한 메시지 브로커 구현 방법
개요
메시지 브로커는 분산 시스템에서 메시지 전달을 중개하는 중요한 역할을 합니다. Spring Framework를 사용하여 간단한 메시지 브로커를 구현하는 방법에 대해 알아보겠습니다.
환경 구성
- JDK 설치
- Spring Boot 설치
- Maven 또는 Gradle을 사용하여 프로젝트 생성
의존성 설정
Spring Boot 프로젝트의 의존성 설정 파일에 다음과 같이 Spring Kafka 의존성을 추가합니다.
<dependency>
<groupId>org.springframework.kafka</groupId>
<artifactId>spring-kafka</artifactId>
</dependency>
Kafka Template 설정
Kafka Template은 Kafka에 메시지를 보내고 받기 위한 핵심 컴포넌트입니다. KafkaTemplate
빈을 생성하고 Kafka 서버의 주소와 함께 필요한 설정을 지정합니다.
@Configuration
@EnableKafka
public class KafkaConfig {
@Value("${spring.kafka.bootstrap-servers}")
private String bootstrapServers;
@Bean
public ProducerFactory<String, String> producerFactory() {
Map<String, Object> configProps = new HashMap<>();
configProps.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, bootstrapServers);
configProps.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class);
configProps.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, StringSerializer.class);
return new DefaultKafkaProducerFactory<>(configProps);
}
@Bean
public KafkaTemplate<String, String> kafkaTemplate() {
return new KafkaTemplate<>(producerFactory());
}
}
메시지 전송
메시지를 전송하기 위해 KafkaTemplate
을 사용합니다. 아래 코드는 KafkaTemplate
을 주입받아 메시지를 전송하는 예시입니다.
@Service
public class MessageProducer {
@Autowired
private KafkaTemplate<String, String> kafkaTemplate;
public void sendMessage(String topic, String message) {
kafkaTemplate.send(topic, message);
}
}
메시지 수신
메시지를 수신하기 위해 @KafkaListener
어노테이션을 사용합니다. 아래 코드는 @KafkaListener
를 사용하여 메시지를 수신하는 예시입니다.
@Service
public class MessageConsumer {
@KafkaListener(topics = "topic1", groupId = "group1")
public void listen(String message) {
// 수신된 메시지 처리 로직
System.out.println("Received message: " + message);
}
}
실행하기
위에서 구현한 메시지 브로커를 실행하려면 Spring Boot 애플리케이션을 실행하면 됩니다.
$ mvn spring-boot:run
결론
Spring Framework를 사용하여 간단하게 메시지 브로커를 구현하는 방법을 알아봤습니다. Spring Kafka를 사용하여 Kafka Template을 설정하고 메시지를 전송하고 수신하는 방법을 알았습니다. 이를 바탕으로 더 복잡한 메시지 브로커 시스템을 구축할 수 있을 것입니다.