1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Spring 初心者:yamlエラーからSpring bootのBeanを浅く勉強しました。

Posted at

yamlエラーからSpring bootのBeanを浅く勉強しました。

下記は遡りながら、勉強していたStackTraceみたいな記録です・・・。


Spring boot3でkafkaの特定サービスのConsumerが認識されず、困りました。(^_^;)

kafka.error message log。トピックが認識されない
WARN  o.apache.kafka.clients.NetworkClient - [Producer clientId=producer-1]
Error while fetching metadata with correlation id 1 :
{test-test-succ-event=UNKNOWN_TOPIC_OR_PARTITION}

-> こういうエラーメッセージがいっぱい出ておりましたがtopicは生成済みの状態で。
(つまり、Publishまでは問題なし)

私が書いていたkafkaの設定です

kafka.application.yml
spring:
  kafka:
    bootstrap-servers: kafka:9092
    consumer:
      group-id: order-consumer-group
      auto-offset-reset: earliest
      key-deserializer: org.apache.kafka.common.serialization.StringDeserializer
      value-deserializer: org.apache.kafka.common.serialization.StringDeserializer
    listener:
      ack-mode: record
      missing-topics-fatal: false
      ...

これと下記のlistenerです。

Kafka-listener.java
@KafkaListener(topics = "test-test-succ-evetnt")
public void handleTestSuccess(String message) { ... }
...

ここで、問題はなんだと思いますか?
結論から言うと問題はDeserializerの設定を間違えていたことでした。
なぜかというとSpring Bootが自動でStringDeserializerを使うはずだったのに、
私が

key-deserializer: org.apache.kafka.common.serialization.StringDeserializer
value-deserializer: org.apache.kafka.common.serialization.StringDeserializer

というコードを入れてしまったので、Springが自動設定→手動設定に切り替えるんだ〜と認識してJsonDeserializerのBean登録を無効化してしまったから、私が書いた@KafkaListenerのPayLoadタイプ(Jsonでした)が失敗し、リスナーのコンテナーは実行されるが、メッセージがマッチングできず、callback自体ができませんでした。

もし、私がしたように、手動設定を入れたい場合には少し面倒ですが、直接Beanの設定クラスなどを登録する必要があります。(@Configurationなど・・)

つまり、Spring Bootについてよく知らなかったが原因でした(^_^)ということで、面白い〜と思いました:santa:

*結論*
DI : @Bean
YAML: 設定値渡し
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?