반응형
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 ) 확인
반응형