#spring-boot #gradle #jackson #spring-cloud-stream #spring-boot-actuator
#spring-boot #gradle #джексон #spring-cloud-stream #spring-boot-actuator
Вопрос:
У меня есть довольно простое Java-приложение, которое прослушивает тему Kafka для сообщений JSON.
Это основные зависимости и версии:
id 'org.springframework.boot' version '2.3.5.RELEASE'
...
set('springCloudVersion', "Hoxton.SR9")
...
implementation 'org.springframework.cloud:spring-cloud-stream'
implementation 'org.springframework.cloud:spring-cloud-stream-binder-kafka'
application.properties
Конфигурация, которая определяет формат JSON:
spring.cloud.stream.bindings.listener-in-0.content-type = application/json
И «основной цикл»:
@Bean
public Consumer<Message<MyDataModel>> listener() {
return message -> {
...
И это действует как заклинание. Но теперь я пытаюсь добавить /metrics
конечную точку в приложение с помощью библиотеки Actuator:
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework.boot:spring-boot-starter-actuator'
После добавления их в build.gradle
, ничего не меняя в самом коде, потребителю в приведенном выше фрагменте не удается десериализовать входящие сообщения, каждое поле объекта модели равно null.
Очевидно, spring-boot-starter-web
что пакет перезаписывает механизм обработки JSON, который поставляется вместе с spring-cloud-stream
библиотекой, но я понятия не имею, что делать. Экспериментировал с исключением частей библиотеки web-starter и изменением версии SpringBoot, но пока безуспешно.
Комментарии:
1. Это больше похоже на какую-то регрессию. Не могли бы вы поднять вопрос — github.com/spring-cloud/spring-cloud-stream/issues . Вы можете включить ссылку на этот пост, чтобы избежать дублирования ваших выводов.
2. Добавлена проблема там, но все еще надеюсь на исправление, основанное на исключении чего-либо или каким-то образом указывающее, какой десериализатор использовать.
3. Я ответил на проблему и предоставил полный образец. Я не могу воспроизвести то, что вы описываете. Возможно, есть другие зависимости, которые являются частью вашего пути к классу, которые могут мешать, но пока это не похоже на привод. Как было предложено в комментарии к проблеме, если вы все еще считаете, что проблема существует, пожалуйста, предоставьте образец, который мы можем использовать для воспроизведения проблемы.
Ответ №1:
Обновление версии springboot до 2.4.2 с версии 2.3.5.RELEASE и версии spring-cloud до 2020.0.1 с Hoxton.SR9 решило проблему для нас.