У меня есть микро-сервис, который отправляет объект json, а другой получает этот объект.
Я настроил потребителя следующим образом:
@Bean
public Map<String, Object> consumerConfigs() {
Map<String, Object> props = new HashMap<>();
props.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, kafkaServer);
props.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class);
props.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, JsonDeserializer.class);
props.put(ConsumerConfig.GROUP_ID_CONFIG, "foo");
// this is the package from the producer class
props.put(JsonDeserializer.TRUSTED_PACKAGES, "com.example.employee.dto");
props.put(ConsumerConfig.AUTO_OFFSET_RESET_CONFIG, "earliest");
return props;
}
, а также, чтобы быть уверенным, добавил эти строки в файл конфигурации YML:
kafka:
topic:
name: user-add
server:
host: localhost:9092
consumer:
properties:
spring:
json:
trusted:
packages: com.example.employee.dto
но все равно я получаю эту ошибку:
org.apache.kafka.common.errors.SerializationException: Ошибка десериализации ключа / значения для раздела user-add-0 со смещением 0. При необходимости, пожалуйста, просмотрите запись, чтобы продолжить потребление.
Вызывается: java.lang.IllegalArgumentException: класс 'com.example.employee.dto.UserCreateDto' отсутствует в доверенных пакетах: [java.util, java.lang, com.sifast.socle.microservices.authservice.dto] , Если вы считаете, что этот класс безопасен для десериализации, укажите его имя. Если сериализация выполняется только доверенным источником, вы также можете включить доверять всем (*).
Есть что-нибудь, что я пропускаю?