[java] Spring Framework를 이용한 메시지 브로커 구현 방법

개요

메시지 브로커는 분산 시스템에서 메시지 전달을 중개하는 중요한 역할을 합니다. Spring Framework를 사용하여 간단한 메시지 브로커를 구현하는 방법에 대해 알아보겠습니다.

환경 구성

  1. JDK 설치
  2. Spring Boot 설치
  3. 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을 설정하고 메시지를 전송하고 수신하는 방법을 알았습니다. 이를 바탕으로 더 복잡한 메시지 브로커 시스템을 구축할 수 있을 것입니다.

참고 자료