私はorg.springframework.kafka依存してApacheのカフカを使って春のブートアプリケーションからJSONオブジェクトのメッセージを消費する必要がありますが、私は次のエラーを得ました:
***************************
APPLICATION FAILED TO START
***************************
Description:
Parameter 1 of method kafkaListenerContainerFactory in org.springframework.boot.autoconfigure.kafka.KafkaAnnotationDrivenConfiguration required a bean of type 'org.springframework.kafka.core.ConsumerFactory' that could not be found.
これは、カフカの設定のために作成されたすべての必要な豆を持っている私のBeanクラスです。
@Configuration
@EnableKafka
public class KafkaConsumerConfig {
@Bean
public ConsumerFactory<String,Message> consumerFactory(){
Map<String,Object> config = new HashMap<>();
config.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG,"127.0.0.1:9092");
config.put(ConsumerConfig.GROUP_ID_CONFIG,"sample-group");
config.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, StringSerializer.class);
config.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, JsonSerializer.class);
return new DefaultKafkaConsumerFactory<>(config,new StringDeserializer(),
new JsonDeserializer<>(Message.class));
}
@Bean
public ConcurrentKafkaListenerContainerFactory<String, Message> kafkaListener(){
ConcurrentKafkaListenerContainerFactory factory = new ConcurrentKafkaListenerContainerFactory();
factory.setConsumerFactory(consumerFactory());
return factory;
}
}
缶誰の助け私?何が私が間違っているのでしょうか?ありがとうございました。
あなたは使用することができるapplication.properties/application.yml
ことをachiveします。
春ブーツは私たちがして、注釈付きのJavaクラスの作成導入していること、すべての定型コードを回避することを可能にすることをしてください予告@Configuration
application.yml例:
server:
port: 8085
#Kafka config props:
spring:
kafka:
bootstrap-servers: 127.0.0.1:9092
#Consumer Deserialization:
consumer:
key-deserializer: org.apache.kafka.common.serialization.StringDeserializer
value-deserializer: org.apache.kafka.common.serialization.StringDeserializer
group-id: myGroupId
enable-auto-commit: false
listener:
missing-topics-fatal: false
bootstrap-servers
:利用可能カフカサーバのリスト。
key-deserializer
:コンシューマキーデシリアライゼーションクラス。カフカライブラリのStringDeserializerクラスを使用します。
value-deserializer
:消費者の価値デシリアライゼーションクラス。あなたはJSONフォーマットされた文字列のメッセージを消費しているとして、カフカライブラリのStringDeserializerクラスを使用します。
group-id
:カフカ消費者のグループID値。
enable-auto-commit
:現在の消費メッセージが消費者によって処理されているときに新しいメッセージが消費されている場合、消費者のクラッシュ回避するには、手動でオフセットメッセージをコミットすることができますこの値をfalseに設定します。
listener.missing-topics-fatal
:値をfalseに設定することで、構成された話題の任意のブローカ上に存在しない場合は、アプリケーションの起動時に表示される不要なエラーを回避することができます。
お役に立てれば。