Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.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
Spring 使用卡夫卡流查找特定单词_Spring_Apache Kafka_Apache Kafka Streams - Fatal编程技术网

Spring 使用卡夫卡流查找特定单词

Spring 使用卡夫卡流查找特定单词,spring,apache-kafka,apache-kafka-streams,Spring,Apache Kafka,Apache Kafka Streams,我已经从那里创建了rest端点数据,我将它发送到卡夫卡主题“主题反馈”。现在我想处理这些数据并将其发送到另一个卡夫卡主题“主题好词”。现在,从rest结束点数据正确地到达主题“主题反馈”,但经过处理并发送到另一个主题“主题好词”后,“主题好词”中看不到数据 程序中没有错误 这是我的密码: @Configuration public class FeedbackStream { Set<String> GOOD_WORDS = Set.of("happy&q

我已经从那里创建了rest端点数据,我将它发送到卡夫卡主题“主题反馈”。现在我想处理这些数据并将其发送到另一个卡夫卡主题“主题好词”。现在,从rest结束点数据正确地到达主题“主题反馈”,但经过处理并发送到另一个主题“主题好词”后,“主题好词”中看不到数据

程序中没有错误

这是我的密码:

@Configuration
public class FeedbackStream {
    
    Set<String> GOOD_WORDS = Set.of("happy", "good", "helpful");

    @Bean
    public KStream<String,String> KStreamFeedback(StreamsBuilder builder)
    {
        var stringSerde = Serdes.String();
        var feedbackSerde = new JsonSerde<>(Feedback.class);

        ((JsonDeserializer) feedbackSerde.deserializer()).setUseTypeHeaders(false);
        
         var sourceStream = builder.stream("topic-feedback", Consumed.with(stringSerde,feedbackSerde))
                                                        .flatMapValues(mapperGoodWords());
          
        sourceStream.to("topic-goodWord", Produced.with(stringSerde,stringSerde));

        return sourceStream;
    }





private ValueMapper<Feedback,Iterable<String> > mapperGoodWords() 
    {
        return feedback -> Arrays
                           .asList(feedback.getFeedback().replaceAll("[^a-zA-Z]", "").toLowerCase()
                           .split("\\s+")).stream()
                           .filter(word -> GOOD_WORDS.contains(word)).distinct().collect(Collectors.toList());
    }

    
卡夫卡流配置

@Configuration
@EnableKafkaStreams
public class KafkaStreamConfig {
    
    @Bean(name = KafkaStreamsDefaultConfiguration.DEFAULT_STREAMS_CONFIG_BEAN_NAME)
    public KafkaStreamsConfiguration kafkaStreamConfig()
    {
        var props = new HashMap<String, Object>();

        props.put(StreamsConfig.APPLICATION_ID_CONFIG, "kafka-stream");
      
         props.put(StreamsConfig.BOOTSTRAP_SERVERS_CONFIG,"localhost:9092");

        props.put(StreamsConfig.DEFAULT_KEY_SERDE_CLASS_CONFIG, Serdes.String().getClass().getName());
        props.put(StreamsConfig.DEFAULT_VALUE_SERDE_CLASS_CONFIG,Serdes.String().getClass().getName());
        props.put(JsonDeserializer.USE_TYPE_INFO_HEADERS,"false");
      
        return new KafkaStreamsConfiguration(props);
    }
}
 
@配置
@使能卡夫卡团队
公共类KafkaStreamConfig{
@Bean(name=KafkaStreamsDefaultConfiguration.DEFAULT\u STREAMS\u CONFIG\u Bean\u name)
公共kafkastreams配置kafkaStreamConfig()
{
var props=newhashmap();
put(StreamsConfig.APPLICATION_ID_CONFIG,“卡夫卡流”);
put(StreamsConfig.BOOTSTRAP\u SERVERS\u CONFIG,“localhost:9092”);
props.put(StreamsConfig.DEFAULT_KEY_SERDE_CLASS_CONFIG,Serdes.String().getClass().getName());
props.put(StreamsConfig.DEFAULT_VALUE_SERDE_CLASS_CONFIG,Serdes.String().getClass().getName());
put(JsonDeserializer.USE_TYPE_INFO_头,“false”);
返回新的Kafkastreams配置(道具);
}
}

我错在哪里?

塔萨,这就是我所看到的卡夫卡流的问题,有时候,它会吃掉那些例外。但无论如何,现在你们的问题是,若它并没有到达另一个主题,那个就意味着它可能是序列化问题。你也这样做,因为我在这里没有看到

var kafkaStreams = new KafkaStreams(sourceStream,  streamsConfiguration);
kafkaStreams.start();

您已经创建了一个KStream拓扑,但您实际上从何处启动它,以便读取/处理任何数据?@OneCricketeer我已经从那里创建了rest端点数据即将到来,我正在将其发送到kafka主题“主题反馈”。现在我想处理这些数据并将其发送到另一个卡夫卡主题“主题好词”。现在,从rest结束点数据正确地到达主题“主题反馈”,但经过处理并发送到另一个主题“主题好词”后,“主题好词”中看不到数据。程序中没有错误。我理解你的代码试图做什么,但不清楚你是否像答案所示调用了
start()
。这里所做的就是定义一些方法和一个bean。可能没有错误,因为在我之前关于卡夫卡主题的练习程序中,您从未在任何地方加载此bean来启动stream@OneCricketeer,我没有使用
start()
,但它们工作得很好。现在我创建了一个新主题,但似乎我并没有在配置中提到新的流。这就是问题所在吗?我很困惑。请帮帮我。我不知道您最终在这里使用的是什么Spring库,但根据我添加的Kafka stream config文档,它不是Kafka Streams活页夹。除此之外,我还有另一个主题的文件。这次我创建了一个新的主题。但是我还没有配置新主题的新流(通道)。这就是问题所在吗?因为这是第一个没有显示输出的新主题和新流的程序。很抱歉,我还没有在以前的程序中使用您的上述代码,但它们工作正常。请引导我,我很困惑。
var kafkaStreams = new KafkaStreams(sourceStream,  streamsConfiguration);
kafkaStreams.start();