【发布时间】:2020-06-06 08:44:14
【问题描述】:
在我的 Spring Cloud Kafka Streams 应用程序中,我想将 KTable<String, Foo> 加入到 KTable<String, Bar>。我的应用程序的输入已使用 MessagePack 进行编码,因此我使用以下代码为 Foo 和 Bar 定义了 Serdes。
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Foo {
String a;
String b;
}
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Bar {
String c;
String d;
}
// ObjectMapper mapper = new ObjectMapper(new MessagePackFactory());
@Bean
public Serde<Foo> fooSerde() {
return new JsonSerde<Foo>(Foo.class, mapper);
}
@Bean
public Serde<Bar> barSerde() {
return new JsonSerde<Bar>(Bar.class, mapper);
}
我的问题是,要在join之后指定KTable的值类型,我现在是否必须定义:
@Data
@NoArgsConstructor
@AllArgsConstructor
public class FooBar {
String a;
String b;
String c;
String d;
}
@Bean
public Serde<FooBar> fooBarSerde() {
return new JsonSerde<FooBar>(FooBar.class, mapper);
}
这似乎是相当多的样板文件?特别是如果Foo 和Bar 有很多字段。有什么可以缩短我的代码的吗?
【问题讨论】:
标签: spring-boot apache-kafka apache-kafka-streams spring-kafka spring-cloud-stream