减少Spring Cloud Kafka Streams应用中的锅炉模板

问题描述 投票:0回答:1

在我的Spring Cloud Kafka Streams应用程序中,我想加入一个 KTable<String, Foo>KTable<String, Bar>. 我的应用程序的输入已经使用MessagePack进行编码,所以我已经为 FooBar 使用下面的代码。

@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);
}

我的问题是,要指定加入后的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);
}

这似乎是一个相当多的模板?尤其是当 FooBar 有很多字段。我有什么办法可以缩短我的代码吗?

spring-boot apache-kafka apache-kafka-streams spring-kafka spring-cloud-stream
1个回答
2
投票

我是一个Kafka新手。

到目前为止,我所看到的是有一个FooBar类,它有一个Foo和Bar的实例,所以你不需要接触 "加入 "的类。比如说

@Data
@NoArgsConstructor
@AllArgsConstructor
public class FooBar {
  Foo foo;
  Bar bar;
}
© www.soinside.com 2019 - 2024. All rights reserved.