【问题标题】:Reducing boilerplate in Spring Cloud Kafka Streams app减少 Spring Cloud Kafka Streams 应用程序中的样板
【发布时间】:2020-06-06 08:44:14
【问题描述】:

在我的 Spring Cloud Kafka Streams 应用程序中,我想将 KTable<String, Foo> 加入到 KTable<String, Bar>。我的应用程序的输入已使用 MessagePack 进行编码,因此我使用以下代码为 FooBar 定义了 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);
}

这似乎是相当多的样板文件?特别是如果FooBar 有很多字段。有什么可以缩短我的代码的吗?

【问题讨论】:

    标签: spring-boot apache-kafka apache-kafka-streams spring-kafka spring-cloud-stream


    【解决方案1】:

    这里是卡夫卡新手。

    到目前为止,我所看到的是拥有一个 FooBar 类,该类具有 Foo 和 Bar 的实例,因此您无需触摸“joined”类。例如

    @Data
    @NoArgsConstructor
    @AllArgsConstructor
    public class FooBar {
      Foo foo;
      Bar bar;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-10
      • 1970-01-01
      • 1970-01-01
      • 2019-10-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-23
      相关资源
      最近更新 更多