Skip to content

Commit c686a02

Browse files
committed
temporary
1 parent 636ecc6 commit c686a02

File tree

5 files changed

+93
-0
lines changed

5 files changed

+93
-0
lines changed

backend/build.gradle

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,9 @@ dependencies {
5454
testImplementation 'org.testcontainers:junit-jupiter'
5555
testImplementation "com.redis:testcontainers-redis:2.2.4"
5656

57+
/* KAFKA */
58+
implementation 'org.springframework.kafka:spring-kafka'
59+
5760
/* ETC */
5861
implementation 'org.apache.commons:commons-lang3:3.12.0'
5962
annotationProcessor 'org.projectlombok:lombok'
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
package io.f1.backend.global.config;
2+
3+
import java.util.HashMap;
4+
import java.util.Map;
5+
6+
import org.apache.kafka.clients.producer.ProducerConfig;
7+
import org.apache.kafka.common.serialization.StringSerializer;
8+
import org.springframework.context.annotation.Bean;
9+
import org.springframework.context.annotation.Configuration;
10+
import org.springframework.kafka.annotation.EnableKafka;
11+
import org.springframework.kafka.core.DefaultKafkaProducerFactory;
12+
import org.springframework.kafka.core.KafkaTemplate;
13+
import org.springframework.kafka.core.ProducerFactory;
14+
15+
@EnableKafka
16+
@Configuration
17+
public class KafkaConfig {
18+
19+
@Bean
20+
public ProducerFactory<String, String> producerFactory() {
21+
Map<String, Object> properties = new HashMap<>();
22+
23+
properties.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:9092");
24+
properties.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class);
25+
properties.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, StringSerializer.class);
26+
27+
return new DefaultKafkaProducerFactory<>(properties);
28+
}
29+
30+
@Bean
31+
public KafkaTemplate<String, String> kafkaTemplate() {
32+
return new KafkaTemplate<>(producerFactory());
33+
}
34+
}
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package io.f1.backend.global.util.kafka;
2+
3+
import org.springframework.kafka.core.KafkaTemplate;
4+
import org.springframework.stereotype.Component;
5+
import com.fasterxml.jackson.core.JsonProcessingException;
6+
import com.fasterxml.jackson.databind.ObjectMapper;
7+
8+
import lombok.RequiredArgsConstructor;
9+
import lombok.extern.slf4j.Slf4j;
10+
11+
@Slf4j
12+
@Component
13+
@RequiredArgsConstructor
14+
public class KafkaProducer {
15+
16+
private final KafkaTemplate<String, String> kafkaTemplate;
17+
18+
public void send(String topic, Object object) {
19+
ObjectMapper om = new ObjectMapper();
20+
String jsonMessage = null;
21+
22+
try {
23+
jsonMessage = om.writeValueAsString(object);
24+
} catch (JsonProcessingException e) {
25+
log.error("KafkaProducer Json Processing error, topic={}", topic, e);
26+
}
27+
28+
kafkaTemplate.send(topic, jsonMessage);
29+
}
30+
31+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package io.f1.backend.global.util.kafka.connect;
2+
3+
import lombok.AllArgsConstructor;
4+
5+
@AllArgsConstructor
6+
public class Field {
7+
private String type;
8+
private boolean optional;
9+
private String field;
10+
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package io.f1.backend.global.util.kafka.connect;
2+
3+
import java.util.List;
4+
5+
import lombok.AllArgsConstructor;
6+
import lombok.Getter;
7+
8+
@Getter
9+
@AllArgsConstructor
10+
public class Schema {
11+
private String type;
12+
private List<Field> fields;
13+
private boolean optional;
14+
private String name;
15+
}

0 commit comments

Comments
 (0)