Spring boot 一旦使用SpringCloudStream的SpringBoot应用程序停止生产,Kafka Avro主题上的数据就会丢失
用例是读取2个输入Avro主题,然后生成1个输出Avro主题。该主题有3个分区,复制因子为1,保留期为7天。这些主题都在融合的卡夫卡平台上。生成应用程序是一个Spring引导应用程序(在Java1.8上运行),它使用Spring云流Kafka流与合流Kafka进行交互 问题-每当生产应用程序停止时,所有数据都会丢失。开始偏移量变为结束偏移量,每个分区的数据大小变为0B。 我的application.yml文件如下所示-Spring boot 一旦使用SpringCloudStream的SpringBoot应用程序停止生产,Kafka Avro主题上的数据就会丢失,spring-boot,apache-kafka,spring-cloud-stream,confluent-platform,spring-cloud-stream-binder-kafka,Spring Boot,Apache Kafka,Spring Cloud Stream,Confluent Platform,Spring Cloud Stream Binder Kafka,用例是读取2个输入Avro主题,然后生成1个输出Avro主题。该主题有3个分区,复制因子为1,保留期为7天。这些主题都在融合的卡夫卡平台上。生成应用程序是一个Spring引导应用程序(在Java1.8上运行),它使用Spring云流Kafka流与合流Kafka进行交互 问题-每当生产应用程序停止时,所有数据都会丢失。开始偏移量变为结束偏移量,每个分区的数据大小变为0B。 我的application.yml文件如下所示- spring.cloud.stream: function:
spring.cloud.stream:
function:
definition: f1;f2
bindings:
f1-in-0:
destination: inputTopic1
f2-in-0:
destination: inputTopic2
f1-out-0:
destination: outputTopic1
f2-out-0:
destination: outputTopic2
spring.cloud.stream.kafka.streams:
binder:
brokers: broker
configuration:
schema.registry.url: schemaRegUrl
consumer.interceptor.classes: io.confluent.monitoring.clients.interceptor.MonitoringConsumerInterceptor
producer.interceptor.classes: io.confluent.monitoring.clients.interceptor.MonitoringProducerInterceptor
default:
key.serde: org.apache.kafka.common.serialization.Serdes$SringSerde
value.serde: io.confluent.kafka.streams.serdes.avro.SpecificAvroSerde
bindings:
f1-in-0:
consumer:
applicationId: f1-id
f2-in-0:
consumer:
applicationId: f2-id
我的pom.xml看起来像-
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-stream-binder-kafka-streams</artifactId>
<version>Hoxton.SR5</version>
</dependency>
<dependency>
<groupId>org.apache.avro</groupId>
<artifactId>avro</artifactId>
<version>1.9.1</version>
</dependency>
<dependency>
<groupId>io.confluent</groupId>
<artifactId>kafka-streams-avro-serde</artifactId>
<version>5.3.0</version>
</dependency>
<dependency>
<groupId>io.confluent</groupId>
<artifactId>kafka-avro-serializer</artifactId>
<version>5.3.0</version>
</dependency>
<dependency>
<groupId>org.modelmapper</groupId>
<artifactId>modelmapper</artifactId>
<version>2.3.8</version>
</dependency>
<dependency>
<groupId>io.confluent</groupId>
<artifactId>monitoring-interceptors</artifactId>
<version>5.3.1</version>
</dependency>
org.springframework.boot
SpringBootStarterWeb
org.springframework.boot
弹簧靴起动器执行器
org.springframework.cloud
春天的云溪,卡夫卡溪
Hoxton.SR5
org.apache.avro
阿夫罗
1.9.1
合流的
卡夫卡河酒店
5.3.0
合流的
卡夫卡avro序列化程序
5.3.0
org.modelmapper
模型映射器
2.3.8
合流的
监视拦截器
5.3.1
我的应用程序的处理器类有2个函数-
@Bean
public Function<KStream<String, InputTopicEvent>, KStream<String, OutputTopicEvent>> f1() {
return events -> event;
}
@Bean
public Function<KStream<String, InputTopicEvent>, KStream<String, OutputTopicEvent>> f2() {
return events -> event;
}
@Bean
公共功能f1(){
返回事件->事件;
}
@豆子
公共职能f2(){
返回事件->事件;
}
整个代码工作正常,但一旦应用程序停止,输出主题上的数据就会丢失。
有人能帮忙解决这个问题吗