何使用来自KStream输出主题的消息

时间:2019-05-31 15:42:37

标签: java kafka-consumer-api apache-kafka-streams

我正在使用KStream.to(“ outputtopic”);写输出主题。 在apache文档中提到,它将自动创建传递给to()的主题。如何使用该主题中的消息?

我可以将consumer.subscribe()用于输出主题和轮询消息吗?

        KStreamBuilder builder = new KStreamBuilder();

        builder.stream(topic).filterNot((k, v) -> {
            v.toString().contains(tid);
        }).to("outputtopic");

        streams = new KafkaStreams(builder, config);
        streams.start();

        consumer.subscribe(Arrays.asList("outputtopic"));

1 个答案:

答案 0 :(得分:1)

builder.stream(topic).filterNot((k, v) -> {
            v.toString().contains(tid);
        }) // i.e., without the last `to()` method

这一系列方法的结果是一个KStream。如果您的问题是关于如何在同一应用程序中继续对由此产生的KStream 进行操作,请执行以下操作:

KStream<..., ...> myStream = builder.stream(topic).filterNot((k, v) -> {
            v.toString().contains(tid);
        });
myStream.to("outputtopic");

// Then continue to use the `myStream` instance for further work.
myStream.map(....).aggregate(...);

如果您的问题是关于如何从不同的应用程序中读取输出主题的,则可以通过从另一个Kafka Streams应用程序,KSQL,普通的Kafka使用者(通过订阅)等。