본문 바로가기
IT/java

kafka 이용을 위한 client 의 프로젝트 셋팅 ( feat.gradle )

by 가능성1g 2025. 4. 23.
반응형

Mendix 10.21.1 기준 JDK21, Gradle 8.5 가 설치 되므로 이 환경에 맞추어서 구성하였다.

 

1. gradle 확인

Mendix 10.21.1 을 설치하면 

C:\Users\{사용자}\AppData\Local\Programs\Mendix\gradle-8.5

에 기본으로 설치된다. PATH 를 연결하고 

gradle -v 

로 정상 확인한다.

 

2. 프로젝트 생성

mkdir kafka-gradle-example
cd kafka-gradle-example
gradle init --type java-application

 

기본값으로 대부분 진행 한다.

 

3. 프로젝트 Import ( eclipse )

Gradle > Existing Gradle Project  로 생성한 프로젝트를 불러온다. 

 

4. build.gradle 수정

dependencies 를 넣어준다.

/*
 * This file was generated by the Gradle 'init' task.
 *
 * This generated file contains a sample Java application project to get you started.
 * For more details on building Java & JVM projects, please refer to https://docs.gradle.org/8.5/userguide/building_java_projects.html in the Gradle documentation.
 */

plugins {
    // Apply the application plugin to add support for building a CLI application in Java.
    id 'java'
    id 'application'
}

group = 'com.kjb.rnd'
version = '1.0'

repositories {
    // Use Maven Central for resolving dependencies.
    mavenCentral()
}

dependencies {
    // Use JUnit test framework.
    testImplementation libs.junit

    // This dependency is used by the application.
    implementation libs.guava
    
    // HanTJ Kafka
    implementation 'org.apache.kafka:kafka-clients:3.7.2'
    implementation 'org.slf4j:slf4j-simple:2.0.12'
}

// Apply a specific Java toolchain to ease working on different environments.
java {
    toolchain {
        languageVersion = JavaLanguageVersion.of(21)
    }
}

application {
    // Define the main class for the application.
    mainClass = 'com.kjb.rnd.App'
}

 

프로젝트에서 오른쪽 마우스 클릭하여 Gradle > Refresh Gradle Project 를 해준다.

 

5. 소스 작성

package com.kjb.rnd.example;

import java.util.Properties;

import org.apache.kafka.clients.producer.KafkaProducer;
import org.apache.kafka.clients.producer.Producer;
import org.apache.kafka.clients.producer.ProducerRecord;

public class SimpleProducer {
	
	public void makeProducer() {
		Properties props = new Properties();
        props.put("bootstrap.servers", "<WSL의 IP>:9092");
        props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");
        props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");
        
        try (Producer<String, String> producer = new KafkaProducer<>(props)) {
            for (int i = 0; i < 5; i++) {
                producer.send(new ProducerRecord<>("test-topic", "key" + i, "value" + i));
            }
        }
        
        System.out.println("메시지 전송 완료");
	}
}

 

6. 카프카 실행 ( wsl )

 

카프카는 어차피? 리눅스 환경에서 실행해야 하니 , wsl 에 설치해서 진행했다.

3.7.2 버전을 다운받아 적당한 곳에 압축 해제 후, KRAFT 모드로 1개 서버로 실행한다.

 

CLUSTER_ID 생성

./bin/kafka-storage.sh random-uuid

 

server.properties 파일 변경

listeners=PLAINTEXT://0.0.0.0:9092
advertised.listeners=PLAINTEXT://<WSL의 IP>:9092

 

WSL의 IP 확인방법

ip addr show eth0

 

스토리지 디렉토리 설정

./bin/kafka-storage.sh format -t <CLUSTER_ID> -c ./config/kraft/server.properties

 

브로커 시작

./bin/kafka-server-start.sh ./config/kraft/server.properties

 

7. 토픽 생성 및 컨슈머 실행

 

테스트 프로듀서를 위해 토픽생성 컨슈머를 실행한다.

 

토픽생성 ( test-topic )

./bin/kafka-topics.sh --bootstrap-server localhost:9092 \
--create --topic test-topic \
--partitions 1 \
--replication-factor 1

 

컨슈머 실행

./bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 \
--topic test-topic \
--from-beginning

 

7. 프로듀서( client ) 실행 및 컨슈머( server ) 확인

 

반응형