为什么我的kafka-consumer-console版本没有产生结果?

时间:2018-03-27 19:31:24

标签: apache-kafka apache-kafka-streams

作为一项学习练习,我尝试使用下面显示的代码简单地复制kafka-consumer-console应用程序。当我将一些数据放入Kafka主题并验证它与kafka-consumer-console存在时,我的代码不会产生任何结果。我在这里缺少什么?

    public void dump(String kafka_topic) {
        StreamsBuilder streams_builder = new StreamsBuilder();
        KStream< Long, TsdbObject > kstream = streams_builder.stream( kafka_topic );
        Printed< Long, TsdbObject > printed = Printed.toSysOut();
        kstream.print( printed );

        Map<String, Object> kstreams_props = new HashMap<>();
        kstreams_props.put(StreamsConfig.APPLICATION_ID_CONFIG, "DumpKafkaTopic");
        kstreams_props.put(StreamsConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:9092");
        kstreams_props.put(StreamsConfig.DEFAULT_KEY_SERDE_CLASS_CONFIG, Serdes.String().getClass());
        kstreams_props.put(StreamsConfig.DEFAULT_VALUE_SERDE_CLASS_CONFIG, Serdes.String().getClass());
        // make sure to consume the complete topic via "auto.offset.reset = earliest"
        kstreams_props.put(ConsumerConfig.AUTO_OFFSET_RESET_CONFIG, "earliest");
        StreamsConfig kstreams_config = new StreamsConfig(kstreams_props);

        KafkaStreams kstreams = new KafkaStreams( streams_builder.build(), kstreams_config );
        System.out.println( "Starting DumpKafkaTopic stream " );
        System.out.println( "kstreams is " + kstreams.toString() );
        kstreams.start();

        // Add shutdown hook to respond to SIGTERM and gracefully close Kafka Streams (from https://www.confluent.io/blog/data-reprocessing-with-kafka-streams-resetting-a-streams-application/)
        Runtime.getRuntime().addShutdownHook(new Thread(new Runnable() {
            @Override
            public void run() {
                System.out.println( "Stopping DumpKafkaTopic stream " );
                kstreams.close();
            }
        }));        
    }

0 个答案:

没有答案