首页 > 解决方案 > value.serializer 出错(Docker 中的 Spring Boot 和 Kafka)

问题描述

如果我从 fatjar 运行 spring,它会使用 spring 序列化程序,它可以工作(在生产者设置,包中规定org.springframework.kafka.support.serializer.JsonSerializer),消息序列化没有错误,但是如果你尝试在容器中运行 spring boot,由于某种原因设置不适用,标准com.fasterxml.jackson.databind.JsonSerializer有效,为什么会这样?

import org.springframework.kafka.support.serializer.JsonSerializer;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

@Configuration
public class KafkaProducerConfig {

    @Value("${spring.kafka.bootstrap-servers}")
    private String kafkaServer;

    @Value("${spring.kafka.producer.client-id}")
    private String kafkaProducerId;

    @Bean
    public Map<String, Object> producerConfigs() {
        Map<String, Object> props = new HashMap<>();
        props.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, kafkaServer);
        props.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, LongSerializer.class);
        props.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, JsonSerializer.class);
        props.put(ProducerConfig.CLIENT_ID_CONFIG, kafkaProducerId);
        return props;
    }

登录码头:

value.serializer = class com.fasterxml.jackson.databind.JsonSerializer

无法实例化类com.fasterxml.jackson.databind.JsonSerializer

docker-compose 的部分内容:

mvc_app:
container_name: mvc_app
build:
  context: zscore_mvc
  dockerfile: /docker/mvc/Dockerfile
ports:
- "8080:8080"
depends_on:
  - db
  - kafka
restart: "no"

zookeeper:
    container_name: zookeeper
    image: 'bitnami/zookeeper:latest'
    ports:
      - "2181:2181"
    environment:
      ALLOW_ANONYMOUS_LOGIN: 'yes'
      ZOOKEEPER_CLIENT_PORT: 2181
      ZOOKEEPER_TICK_TIME: 2000
  kafka:
    image: bitnami/kafka
    container_name: kafka
    ports:
      - "9092:9092"
    environment:
      KAFKA_BROKER_ID: 1
      KAFKA_CFG_ZOOKEEPER_CONNECT: zookeeper:2181
      KAFKA_CFG_LISTENERS: PLAINTEXT://:9092
      KAFKA_CFG_ADVERTISED_LISTENERS: PLAINTEXT://127.0.0.1:9092
      ALLOW_PLAINTEXT_LISTENER: 'yes'
    depends_on:
      - zookeeper

标签: javaspringspring-bootdockerspring-kafka

解决方案


推荐阅读