导致会话0x0关闭的异常:null-Java+;卡夫卡+;动物园管理员&x2B;码头工人

导致会话0x0关闭的异常:null-Java+;卡夫卡+;动物园管理员&x2B;码头工人,java,docker,apache-kafka,docker-compose,apache-zookeeper,Java,Docker,Apache Kafka,Docker Compose,Apache Zookeeper,我正在尝试使用这个对象,我遵循它来实现这一点。下面是正在使用的代码: private final KafkaProducer producer; private final Serializer serializer; public KafkaEventPublisher(String zookeeper, Serializer serializer) { Properties props = new Properties(); props.put(ProducerConfig

我正在尝试使用这个对象,我遵循它来实现这一点。下面是正在使用的代码:

private final KafkaProducer producer;
private final Serializer serializer;

public KafkaEventPublisher(String zookeeper, Serializer serializer) {
    Properties props = new Properties();
    props.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, zookeeper);
    props.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class);
    props.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, StringSerializer.class);
    props.put(ProducerConfig.CLIENT_ID_CONFIG, "KafkaProducerTest");

    this.producer = new KafkaProducer<>(props);
    this.serializer = serializer;
}

@Override
public <T extends Event> void publish(String streamName, T event) {
    try {
        String eventEnvelopeJson = serializer.serialize(event);

        ProducerRecord<String, String> record = new ProducerRecord<>(streamName, event.getId().toString(), eventEnvelopeJson);
        this.producer.send(record);
    } finally {
        this.producer.flush();
        this.producer.close();
    }
}
当我试着运行一个测试用例并测试上面的代码时,docker compose视图会收到带有此错误消息的垃圾邮件,最终测试用例超时

keeper_1      | 2018-03-28 09:05:34,828 [myid:] - INFO  [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:NIOServerCnxnFactory@215] - Accepted socket connection from /172.20.0.1:37638
zookeeper_1      | 2018-03-28 09:05:34,829 [myid:] - WARN  [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:NIOServerCnxn@383] - Exception causing close of session 0x0: null
zookeeper_1      | 2018-03-28 09:05:34,829 [myid:] - INFO  [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:NIOServerCnxn@1040] - Closed socket connection for client /172.20.0.1:37638 (no session established for client)
zookeeper_1      | 2018-03-28 09:05:35,689 [myid:] - INFO  [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:NIOServerCnxnFactory@215] - Accepted socket connection from /172.20.0.1:37640
zookeeper_1      | 2018-03-28 09:05:35,692 [myid:] - WARN  [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:NIOServerCnxn@383] - Exception causing close of session 0x0: null
zookeeper_1      | 2018-03-28 09:05:35,693 [myid:] - INFO  [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:NIOServerCnxn@1040] - Closed socket connection for client /172.20.0.1:37640 (no session established for client)
zookeeper_1      | 2018-03-28 09:05:36,772 [myid:] - INFO  [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:NIOServerCnxnFactory@215] - Accepted socket connection from /172.20.0.1:37642
zookeeper_1      | 2018-03-28 09:05:36,773 [myid:] - WARN  [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:NIOServerCnxn@383] - Exception causing close of session 0x0: null
zookeeper_1      | 2018-03-28 09:05:36,773 [myid:] - INFO  [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:NIOServerCnxn@1040] - Closed socket connection for client /172.20.0.1:37642 (no session established for client)
zookeeper_1      | 2018-03-28 09:05:37,772 [myid:] - INFO  [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:NIOServerCnxnFactory@215] - Accepted socket connection from /172.20.0.1:37644
zookeeper_1      | 2018-03-28 09:05:37,773 [myid:] - WARN  [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:NIOServerCnxn@383] - Exception causing close of session 0x0: null
zookeeper_1      | 2018-03-28 09:05:37,773 [myid:] - INFO  [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:NIOServerCnxn@1040] - Closed socket connection for client /172.20.0.1:37644 (no session established for client)
zookeeper_1      | 2018-03-28 09:05:38,877 [myid:] - INFO  [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:NIOServerCnxnFactory@215] - Accepted socket connection from /172.20.0.1:37646
zookeeper_1      | 2018-03-28 09:05:38,880 [myid:] - WARN  [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:NIOServerCnxn@383] - Exception causing close of session 0x0: null
zookeeper_1      | 2018-03-28 09:05:38,880 [myid:] - INFO  [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:NIOServerCnxn@1040] - Closed socket connection for client /172.20.0.1:37646 (no session established for client)
zookeeper_1      | 2018-03-28 09:05:40,061 [myid:] - INFO  [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:NIOServerCnxnFactory@215] - Accepted socket connection from /172.20.0.1:37648
zookeeper_1      | 2018-03-28 09:05:40,062 [myid:] - WARN  [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:NIOServerCnxn@383] - Exception causing close of session 0x0: null
zookeeper_1      | 2018-03-28 09:05:40,062 [myid:] - INFO  [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:NIOServerCnxn@1040] - Closed socket connection for client /172.20.0.1:37648 (no session established for client)
zookeeper_1      | 2018-03-28 09:05:41,017 [myid:] - INFO  [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:NIOServerCnxnFactory@215] - Accepted socket connection from /172.20.0.1:37650
zookeeper_1      | 2018-03-28 09:05:41,019 [myid:] - WARN  [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:NIOServerCnxn@383] - Exception causing close of session 0x0: null
zookeeper_1      | 2018-03-28 09:05:41,019 [myid:] - INFO  [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:NIOServerCnxn@1040] - Closed socket connection for client /172.20.0.1:37650 (no session established for client)

我无法在网上找到有关此错误的任何答案。我希望有人能帮我解决这个问题。

问题源于此不良配置:

props.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, zookeeper);
BOOTSTRAP\u SERVERS\u CONFIG
指的是代理,而不是zookeeper

您可以通过以下方式从zookeeper获得
引导\u服务器\u配置

val zkUtils = ZkUtils(zookeeper, 3000, 3000, JaasUtils.isZkSecurityEnabled)
val brokers = zkUtils.getAllBrokersInCluster()
 .map(_.getBrokerEndPoint(ListenerName.forSecurityProtocol(SecurityProtocol.PLAINTEXT)).connectionString())
 .mkString(",")
...
props.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, brokers)

检查文件kafka*\config\consumer.properties和producer.properties中“bootstrap.servers”的值

生产者和消费者港口的价值也应如此。默认情况下,其值通常为9092

val zkUtils = ZkUtils(zookeeper, 3000, 3000, JaasUtils.isZkSecurityEnabled)
val brokers = zkUtils.getAllBrokersInCluster()
 .map(_.getBrokerEndPoint(ListenerName.forSecurityProtocol(SecurityProtocol.PLAINTEXT)).connectionString())
 .mkString(",")
...
props.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, brokers)