44 lines
1.7 KiB
Java
44 lines
1.7 KiB
Java
package com.example.oneul.infra.config;
|
|
|
|
import java.util.HashMap;
|
|
import java.util.Map;
|
|
|
|
import org.apache.kafka.clients.consumer.ConsumerConfig;
|
|
import org.apache.kafka.common.serialization.StringDeserializer;
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
import org.springframework.context.annotation.Bean;
|
|
import org.springframework.context.annotation.Configuration;
|
|
import org.springframework.kafka.config.ConcurrentKafkaListenerContainerFactory;
|
|
import org.springframework.kafka.core.ConsumerFactory;
|
|
import org.springframework.kafka.core.DefaultKafkaConsumerFactory;
|
|
import org.springframework.kafka.support.serializer.JsonDeserializer;
|
|
|
|
import com.example.oneul.domain.post.domain.PostDocument;
|
|
|
|
@Configuration
|
|
public class KafkaConsumerConfig {
|
|
@Value("${spring.kafka.bootstrap-servers}")
|
|
private String bootstrapServers;
|
|
|
|
@Value("${spring.kafka.consumer.group-id}")
|
|
private String groupId;
|
|
|
|
@Bean
|
|
public ConsumerFactory<String, PostDocument> consumerFactory() {
|
|
Map<String, Object> configs = new HashMap<>();
|
|
configs.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, bootstrapServers);
|
|
configs.put(ConsumerConfig.GROUP_ID_CONFIG, groupId);
|
|
|
|
return new DefaultKafkaConsumerFactory<>(configs,
|
|
new StringDeserializer(),
|
|
new JsonDeserializer<>(PostDocument.class));
|
|
}
|
|
|
|
@Bean
|
|
public ConcurrentKafkaListenerContainerFactory<String, PostDocument> postListener() {
|
|
ConcurrentKafkaListenerContainerFactory<String, PostDocument> factory = new ConcurrentKafkaListenerContainerFactory<>();
|
|
factory.setConsumerFactory(consumerFactory());
|
|
return factory;
|
|
}
|
|
}
|