春のブートアプリケーションでApache kafkaを構成してみます私はこれを読みます documentation そしてステップに従います:
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を作成する必要があります。
_@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);
}
_
しかし、ProducerFactoryマニュアルを作成する必要がある場合、application.yamlで設定するポイントは何ですか?
最初は同じ問題がありましたが、実行するとエラーは発生せず、問題なく動作しました。
無視Intellij IDEAの警告、これはIDEAのバグであり、自動配線されたコンポーネントを理解している可能性があります。
デフォルトでは、KafkaTemplate<Object, Object>
はSpring Bootによって KafkaAutoConfiguration
class に作成されます。 Springは依存関係の注入時にジェネリック型情報を考慮するため、デフォルトのBeanをKafkaTemplate<String, byte[]>
に自動接続することはできません。