Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 卡夫卡的听众不是';我没听卡夫卡的_Java_Apache Kafka - Fatal编程技术网

Java 卡夫卡的听众不是';我没听卡夫卡的

Java 卡夫卡的听众不是';我没听卡夫卡的,java,apache-kafka,Java,Apache Kafka,我正在使用Java11和kafka客户端2.0.0 我使用以下代码生成消费者: public Consumer createConsumer(Properties properties,String regex) { log.info("Creating consumer and listener.."); Consumer consumer = new KafkaConsumer<>(properties);

我正在使用Java11和kafka客户端2.0.0

我使用以下代码生成消费者:

    public Consumer createConsumer(Properties properties,String regex) {
        log.info("Creating consumer and listener..");
        Consumer consumer = new KafkaConsumer<>(properties);
        ConsumerRebalanceListener listener = new ConsumerRebalanceListener() {

            @Override
            public void onPartitionsRevoked(Collection<TopicPartition> partitions) {
                log.info("The following partitions were revoked from consumer : {}", Arrays.toString(partitions.toArray()));
            }

            @Override
            public void onPartitionsAssigned(Collection<TopicPartition> partitions) {
                log.info("The following partitions were assigned to consumer : {}", Arrays.toString(partitions.toArray()));
            }
        };
        consumer.subscribe(Pattern.compile(regex), listener);
        log.info("consumer subscribed");
        return consumer;
    }
}
日志不包含有关分区分配/吊销的任何信息

此外,我能够在日志中看到消费者使用的属性(group.id已设置):

因此,我尝试使用具有相同配置的kafka控制台使用者,以便从正则表达式(mytopic.*)应该捕获的主题之一进行消费(在本例中,我使用了主题mytopic-1):


我在代码的另一部分中有一个轮询循环,它每10米就超时一次。所以底线是——问题是分区没有分配给Java使用者。侦听器中的打印从未发生,而且使用者没有任何分区可供侦听。

我的属性文件中似乎缺少ssl属性。如果使用
ssl
,请不要忘记指定
security.protocol=ssl
。如果kafka使用
ssl
,并且您尝试在未配置
ssl
参数的情况下访问它,则kafka客户端API似乎不会引发异常。

Hi-JeyJ。麻烦你用一下英语拼写检查器好吗?关于堆栈溢出的帖子多年来都是为了未来读者的利益,因此我们希望它们尽可能可读。我很感激你仅仅为了解决你的问题而发表文章,但也许你可以把可读性看作是在这里发表文章的一个便宜的“价格”。你以前的很多文章都经过了拼写修改,这里有一个期望,当内容所有者看到编辑通知时,我在心里记下了今后应该做的改进。@halfer当然,我能做到。我不认为我的英语那么差,也许是一个丢失的字母或类似的东西。。。如果我找到了解决方案,即使没有人回答这个问题,我也总是试图留下一个答案,所以你不能说我没有考虑未来的读者。是的,撇号尤其重要。它们仍然会被标记为拼写错误(不幸的是,“wont”和“cant”除外,当省略撇号时,这两个词的英语含义完全出乎意料)。如果你能特别注意这些词,那就太好了。@halfer将在我的下一篇文章中做/asnwer:)
public <K, V> void startWorking(Consumer<K, V> consumer) {
        try {
            while (true) {
                ConsumerRecords<K, V> records = consumer.poll(600);
                if (records.count() > 0) {
                    log.info("Polled {} records", records.count());

                } else {
                    log.info("polled 0 records.. going to sleep..");
                    Thread.sleep(200);
                }
            }
        } catch (WakeupException | InterruptedException e) {
            log.error("Consumer is shutting down", e);
        } finally {
            consumer.close();
        }
    }
    Creating consumer and listener..
    consumer subscribed
polled 0 records.. going to sleep..
polled 0 records.. going to sleep..
polled 0 records.. going to sleep..
2020-07-09 14:31:07.959 DEBUG 7342 --- [           main] o.a.k.clients.consumer.ConsumerConfig    : ConsumerConfig values:
        auto.commit.interval.ms = 5000
        auto.offset.reset = latest
        bootstrap.servers = [server1:9092]
        check.crcs = true
        client.id =
        group.id=mygroupid
        key.deserializer=..
        value.deserializer=..
/usr/bin/kafka-console-consumer.sh --bootstrap-server server1:9092 --topic mytopic-1 --property print.timestamp=true --consumer.config /data/scripts/kafka-consumer.properties  --from-begining