Apache kafka Kafkastream springcloud kafka加入选择键

Apache kafka Kafkastream springcloud kafka加入选择键,apache-kafka,apache-kafka-streams,spring-cloud-stream,Apache Kafka,Apache Kafka Streams,Spring Cloud Stream,你能帮我配置一个基于Kafka的SpringCloudStream应用程序吗?我在selectKey操作上遇到了问题 让我们解释一下我想要达到的目标 2个传入主题个人,参考类型 Person包含Refgenre的键(值) } 以下是我不工作工作的完整代码: 有更好的方法来处理这个用例吗?拓扑我认为您上次的join调用有一些问题。在ValueJoiner(连接join的第二个参数)中,第一个参数是个人,但您正在传入类型为personwithgenresorde的Serde,它采用PersonWit

你能帮我配置一个基于Kafka的SpringCloudStream应用程序吗?我在selectKey操作上遇到了问题

让我们解释一下我想要达到的目标 2个传入主题个人,参考类型 Person包含Refgenre的键(值)

}

以下是我不工作工作的完整代码:


有更好的方法来处理这个用例吗?

拓扑我认为您上次的
join
调用有一些问题。在
ValueJoiner
(连接
join
的第二个参数)中,第一个参数是
个人
,但您正在传入类型为
personwithgenresorde
Serde
,它采用
PersonWithGenre
类型。这需要是一个
Serde
,可以处理
Person
类型。再次感谢;)有没有办法用新键命名重新分区主题?在我们的代理上不允许自动创建主题。有没有更好的方法来提供相同的结果而不必花费主题创建的成本?拓扑我认为您上次的
join
呼叫有一些问题。在
ValueJoiner
(连接
join
的第二个参数)中,第一个参数是
个人
,但您正在传入类型为
personwithgenresorde
Serde
,它采用
PersonWithGenre
类型。这需要是一个
Serde
,可以处理
Person
类型。再次感谢;)有没有办法用新键命名重新分区主题?在我们的代理上不允许自动创建主题。有没有更好的方法来提供相同的结果而不必花费主题创建的成本?
public class Person {
    String nom;
    String prenom;
    String codeGenre;  <<--- here is the key of the second topic refgenre 
}
@Bean
public BiFunction<KStream<String, Person>, KTable<String, ReferentielGenre>, KStream<Long, PersonWithGenre>> joinKtable() {
    return (persons, referentielGenres) ->
            persons.selectKey((k,v) -> v.getCodeGenre())
                .join(referentielGenres,
                (person, genre) -> new PersonWithGenre(person.getNom(), person.getPrenom(),genre),
                Joined.with(Serdes.String(), new PersonWithGenreSerde(), null));