본문 바로가기
클라우드/Azure

[EventHub] Azure EventHub와 함께 Spring Kafka 사용

by worldcenter 2025. 1. 30.

Event Hubs는 기존 Kafka 기반 애플리케이션에서 사용할 수 있는 Kafka 엔드포인트를 제공합니다.

이 방법은 사용자 고유의 Kafka 클러스터를 실행하는 대신 사용할 수 있습니다.

 

1. application.properties를 아래와 같이 작성합니다.

spring.kafka.bootstrap-servers=<EVENTHUB-NAMESPACE>.servicebus.windows.net:9093
spring.kafka.properties.security.protocol=SASL_SSL
spring.kafka.properties.sasl.mechanism=PLAIN
spring.kafka.properties.sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="$ConnectionString" password="<EVENTHUB-NAMESPACE-ENDPOINT>";

 

2. build.gradle을 아래와 같이 작성 합니다.

plugins {
	id 'java'
	id 'org.springframework.boot' version '3.1.5'
	id 'io.spring.dependency-management' version '1.1.3'
}

group = 'com.kbhc'
version = '0.0.1-SNAPSHOT'

java {
	sourceCompatibility = '17'
}

repositories {
	mavenCentral()
}

dependencies {
	implementation 'org.springframework.boot:spring-boot-starter-web'
	implementation 'org.springframework.kafka:spring-kafka'
	implementation 'com.azure.spring:spring-cloud-azure-starter:4.7.0'
	testImplementation 'org.springframework.boot:spring-boot-starter-test'
	testImplementation 'org.springframework.kafka:spring-kafka-test'
}

tasks.named('test') {
	useJUnitPlatform()
}

jar {
	enabled = false
}

 

3. 코드는 아래와 같이 작성합니다.

package com.kbhc.eventhubgradle;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.kafka.annotation.KafkaListener;
import org.springframework.kafka.core.KafkaTemplate;

@SpringBootApplication
public class EventhubGradleApplication implements CommandLineRunner {

	private static final Logger LOGGER = LoggerFactory.getLogger(EventhubGradleApplication.class);
	private static final String EVENT_HUB_NAME = "test";
	private static final String CONSUMER_GROUP = "$Default";
	private final KafkaTemplate<String, String> kafkaTemplate;

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

	public static void main(String[] args) {

		SpringApplication.run(EventhubGradleApplication.class, args);
	}

	@Override
	public void run(String... args) {
		kafkaTemplate.send(EVENT_HUB_NAME, "Hello World");
		LOGGER.info("Message was sent successfully.");
	}
	@KafkaListener(topics = EVENT_HUB_NAME, groupId = CONSUMER_GROUP)
	public void receive(String message) {
		LOGGER.info("New message received: {}", message);
	}

}

 

 

참고 링크

https://learn.microsoft.com/ko-kr/azure/developer/java/spring-framework/using-event-hubs-in-spring-applications#use-spring-kafka-with-azure-event-hubs

 

Spring 애플리케이션에서 Event Hubs 사용 - Java on Azure

이 문서에서는 Spring Framework로 빌드된 Java 애플리케이션에서 Azure Event Hubs를 사용하는 방법을 보여 줍니다.

learn.microsoft.com