반응형
스프링 부츠에서 카프카 템플릿을 만드는 올바른 방법
봄 부팅 어플리케이션에서 아파치 카프카를 구성해 봅니다.이 설명서를 읽고 다음 단계를 따릅니다.
1) 에 이 행을 추가합니다.aplication.yaml
:
spring:
kafka:
bootstrap-servers: kafka_host:9092
producer:
key-serializer: org.apache.kafka.common.serialization.StringDeserializer
value-serializer: org.apache.kafka.common.serialization.ByteArraySerializer
2) 새 토픽을 만듭니다.
@Bean
public NewTopic responseTopic() {
return new NewTopic("new-topic", 5, (short) 1);
}
그리고 이제 나는 사용하고 싶습니다.KafkaTemplate
:
private final KafkaTemplate<String, byte[]> kafkaTemplate;
public KafkaEventBus(KafkaTemplate<String, byte[]> kafkaTemplate) {
this.kafkaTemplate = kafkaTemplate;
}
그러나 Intellij IDE는 다음을 강조합니다.
이 문제를 해결하려면 콩을 만들어야 합니다.
@Bean
public KafkaTemplate<String, byte[]> myMessageKafkaTemplate() {
return new KafkaTemplate<>(greetingProducerFactory());
}
그리고 시공자 속성에 전달합니다.greetingProducerFactory()
:
@Bean
public ProducerFactory<String, byte[]> greetingProducerFactory() {
Map<String, Object> configProps = new HashMap<>();
configProps.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, "kafka_hist4:9092");
configProps.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class);
configProps.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, ByteArraySerializer.class);
return new DefaultKafkaProducerFactory<>(configProps);
}
그런데 application.yaml에서 ProducerFactory 매뉴얼을 작성해야 한다면 무슨 의미가 있습니까?
IDEA의 경고를 무시해도 무방할 것 같습니다. 일반적인 유형이 다른 Boot의 템플릿에 배선하는 데 문제가 없습니다.
@SpringBootApplication
public class So55280173Application {
public static void main(String[] args) {
SpringApplication.run(So55280173Application.class, args);
}
@Bean
public ApplicationRunner runner(KafkaTemplate<String, String> template, Foo foo) {
return args -> {
template.send("so55280173", "foo");
if (foo.template == template) {
System.out.println("they are the same");
}
};
}
@Bean
public NewTopic topic() {
return new NewTopic("so55280173", 1, (short) 1);
}
}
@Component
class Foo {
final KafkaTemplate<String, String> template;
@Autowired
Foo(KafkaTemplate<String, String> template) {
this.template = template;
}
}
그리고.
they are the same
기본적으로KafkaTemplate<Object, Object>
클래스의 Spring Boot에서 생성됩니다.Spring은 종속성 주입 중 일반 유형 정보를 고려하므로 기본 빈을 자동으로 연결할 수 없습니다.KafkaTemplate<String, byte[]>
.
처음에는 같은 문제가 있었는데 실행해보니 오류가 없었고 잘 작동했습니다.
Intellij IDEA의 경고를 무시하십시오. 자동 배선 구성 요소를 파악하는 IDEA의 버그일 수 있습니다.
언급URL : https://stackoverflow.com/questions/55280173/the-correct-way-for-creation-of-kafkatemplate-in-spring-boot
반응형
'programing' 카테고리의 다른 글
"최대 키 길이가 767바이트"로 인해 MySql 및 마이그레이션이 포함된 엔티티 프레임워크가 실패했습니다. (0) | 2023.10.16 |
---|---|
iframe에서 스크롤 막대 제거 (0) | 2023.10.16 |
Google 페이지다운 각도JS지시 (0) | 2023.10.16 |
ASP에서 기본 인증.NET MVC 5 (0) | 2023.10.16 |
파이썬에 pid가 주어진 프로세스가 있는지 확인하는 방법은? (0) | 2023.10.16 |