- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个以 Avro 格式发送消息的生产者和一个监听这些消息的消费者。
我还通过在我的 Consumer 中使用 @RetryableTopic
来实现非阻塞重试来处理错误。
当消费者无法反序列化消息时(由于架构更改或任何原因),它不会将该消息放入 -retry
主题中。它直接将其发送到 -dlt
主题。
我也希望重试 DeserializationException
。原因是,当重试这些错误时,我可以在我的 Consumer 中部署修复程序,以便重试最终能够成功。
我尝试了 @RetryableTopic
中的 include
选项,但它似乎不适用于 DeserializationException
。
@RetryableTopic(
attempts = "${app.consumer.retry.topic.count:5}",
backoff = @Backoff(delayExpression = "${app.consumer.retry.topic.back-off:2000}"),
fixedDelayTopicStrategy = FixedDelayStrategy.SINGLE_TOPIC,
include = {DeserializationException.class} // does not work
)
这是@RetryableTopic
中的错误还是有其他方法可以实现此目的?
最佳答案
自 Spring Kafka 2.8.3
起,有一组 global fatal exceptions正如您所描述的,这将导致记录直接转发到 DLT
。
处理此类异常的通常模式是,在部署修复程序后,使用某种控制台应用程序从 DLT
检索失败的记录并重新处理它,可能通过发送记录回第一个重试主题,以便主主题中不会出现重复内容。
对于您描述的模式,您可以通过提供 DestinationTopicResolver
bean 来管理这组全局的 FATAL
异常,例如:
@Bean(name = RetryTopicInternalBeanNames.DESTINATION_TOPIC_CONTAINER_NAME)
public DestinationTopicResolver topicResolver(ApplicationContext applicationContext) {
DefaultDestinationTopicResolver ddtr = new DefaultDestinationTopicResolver(Clock.systemUTC(), applicationContext);
ddtr.removeClassification(DeserializationException.class);
return ddtr;
}
请告诉我这是否适合您。谢谢。
关于java - Spring 卡夫卡|如何使 DeserializationException 可重试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71990209/
我使用 streamsBuilder.table("myTopic") 为某个主题创建了一个 Ktable,并将其具体化为状态存储,以便我可以使用交互式查询. 每小时,我都想从该状态存储(以及关联的变
我正在kafka中进行数据复制。但是,kafka 日志文件的大小增长得非常快。一天大小达到 5 GB。作为这个问题的解决方案,我想立即删除已处理的数据。我正在 AdminClient 中使用删除记录方
我实际上正在使用 SASL 纯文本设置简单的 Kafka 身份验证并添加 ACL 授权。但是当我尝试使用数据时遇到问题。 [main] INFO org.apache.kafka.common.uti
我正在一个使用 Kafka 和 Akka Streams 的项目 reactive-kafka连接器。我们发现reactive-kafka使用它自己的调度程序(akka.kafka.default-d
我试图在HDP上运行简单的kafka生产者消费者示例,但面临以下异常。 [2016-03-03 18:26:38,683] WARN Fetching topic metadata with corr
我继承了一些正在实现到另一个项目中的 Kafka 代码,并遇到了一个问题...消费者收到来自生产者的 3995 条消息后,它崩溃并给出以下错误: ERROR Error while accepting
我正在尝试测试 Flink 程序以使用此 JSONKeyValueDeserializationSchema 类读取来自 Kafka 的 JSON 数据。但是我的 Intellij 没有找到这个类。我
我有一个简单的生产者-消费者设置:1 个生产者(作为一个线程)和 2 个消费者(作为 2 个进程)。生产者的run方法: def run(self): producer = K
我正在使用“node-rdkafka”npm 模块来构建用 Nodejs 编写的分布式服务架构。我们有一个计量用例,其中我们只允许每 n 秒消耗和处理一定数量的消息。例如,“主”主题有 100 条由生
我正在学习 Kafka,我想知道当我消费来自主题的消息时如何指定然后分区。 我找到了几张这样的图片: 这意味着一个消费者可以消费来自多个分区的消息,但一个分区只能由单个消费者(在消费者组内)读取。 此
我想从flink读取一个kafka主题 package Toletum.pruebas; import org.apache.flink.api.common.functions.MapFunctio
我阅读了 Kafka 网站上的文档,但是在尝试实现一个完整的最小示例(生产者 --> kafka --> 消费者)之后,我不太清楚“消费者状态”如何处理偏移量。 一些信息 我正在使用高级 API (J
刚开始使用Spring Kafka(2.1.4.RELEASE)和Kafka(1.0.0),但是当我添加事务时,处理速度降低了很多。 代码: spring.kafka.consumer.max-pol
我尝试在安全模式下使用kafka(0.9.1)。我会使用 Spark 读取数据,因此我必须将 JAAS conf 文件传递给 JVM。我使用这个 cmd 来开始我的工作: /opt/spa
目标:读取主题中的所有消息,然后终止进程。 我能够连续阅读以下消息: props.put("bootstrap.servers", kafkaBootstrapSrv); props.put("gro
我写了一个非常简单的 Flink 流作业,它使用 FlinkKafkaConsumer082 从 Kafka 获取数据。 protected DataStream getKafkaStream(Str
我使用的是kafka 2.10-0.9.0.1当我通过命令删除主题时,主题被标记为删除。 bin/kafka-topics.sh --zookeeper localhost:2181 --delete
当我实例化一个 Kafka 消费者时 KafkaConsumer consumer = new KafkaConsumer(props); 我收到这条消息 SLF4J: Failed to load
我有一个用例,我需要 100% 的可靠性、幂等性(无重复消息)以及我的 Kafka 分区中的顺序保留。我正在尝试使用事务 API 来设置概念证明来实现这一点。有一个名为“isolation.level
我们有一个 3 主机的 Kafka 集群。我们有 136 个主题,每个主题有 100 个分区,复制因子为 3。这使得我们的集群中有 13,600 个分区。 这是我们主题的合理配置吗? 最佳答案 太多了
我是一名优秀的程序员,十分优秀!