当前位置:首页 > 数码 > 极致便当与卓越容错-Topic-Spring-重试-成功-运用-Kafka (极致餐是什么意思)

极致便当与卓越容错-Topic-Spring-重试-成功-运用-Kafka (极致餐是什么意思)

admin7个月前 (04-14)数码47

概述

Kafka的弱小性能之一是每个分区都有一个Consumer的偏移值。该偏移值是消费者将读取的下一条信息的值。可以智能或手动参与该值。假设咱们因为失误而不可处置信息并想重试,咱们可以选用手动治理,并在成功的状况下参与偏移量。然而,这会临时阻止队列信息的处置。咱们可以选用异步方法。

为什么咱们须要它?

假设出现失误,而不是中止队列信息的处置;咱们可以将失误信息转移到不同的主题并再次处置。

假设在处置Kafka信息时出现失误,可以经常使用RetryableTopic注解以必定的时时期隔和必定的次数再次处置信息。假设成功尝试次数后失误依然存在,则信息将发送到DLT队列。

如何经常使用?

咱们首先回忆一下RetryableTopic注解可以取的一些值,以便您可以做出最适宜您的设置:

attempts:尝试处置信息的次数。它的自动值为3。假设成功一切尝试后依然收到失误,则信息将发送到DLT队列。

backoff:用于确定处置信息的时时期隔。从Backoff类失掉一个值。您可以在上方找到退却的具体示例。

扫除/扫除称号:准许您扫除指定的意外类。当您参与到列表中的任何失误被抛出时,重试机制将不会被激活。

include/includeNames:仅当抛出指定的意外时才会激活重试机制。

kafkaTemplate:只管您可以给出现有kafkaTemplatebean的称号,但您也可认为特定于重试的Kafka模板定义不同的bean。

autoCreateTopics:选择能否智能创立Retry和DLT主题。

retryTopicSuffix/dltTopicSuffix:用于确定要参与到智能创立的主题末尾的后缀。

dltStrategy:假设不须要DLT,可以定义为NO_DLT。

SameIntervalTopicReuseStrategy/fixedDelayTopicStrategy(3.0.4之前):用于确定要创立的重试主题战略。创立(SINGLE_TOPIC)或尽或者多的尝试值(MULTIPLE_TOPICS)重试主题。

Backoff的示例:

Backoff(delay=600000)//每10分钟
Backoff(delay=60000,multiplier=2)//1、2、4、8...分钟后重复。
Backoff(delayExpression="${delay}",multiplierExpression="${multiplier}")

@RetryableTopic示例:

@RetryableTopic(backoff=@Backoff(delay=300000),attempts=12,sameIntervalTopicReuseStrategy=SameIntervalTopicReuseStrategy.SINGLE_TOPIC,kafkaTemplate="kafkaRetryableTopicTemplate",exclude={SerializationException.class,DeserializationException.class,NullPointerException.class})@KafkaListener(topics="my-topic")publicvoidprocessMessage(RetryableDtoretryableDto){log.info("RetryingprocessRetryableDto:{}",retryableDto);//processmessage}

在上方的例子中,信息将每5分钟从新处置一次性,总共12次,即1小时。假设任何尝试均顺利成功,则试用将中断。

因为定义了SINGLE_TOPIC,因此将创立单个主题以启动重试。假设没有启动此定义,则会创立12个重试主题。

假设抛出了扫除中定义的任何失误,则不会执行重做。

假设须要,您可以编写自己的RetryableException并在蕴含中定义此值,以便仅在引发此失误时才重试。

DLT队列处置

假设成功了定义的尝试次数并且继续收到失误,则信息将发送到DLT队列。假设要处置这些信息,可以经常使用DltHandler注解。

用法示例:

@DltHandlerpublicvoidhandleDltMessage(RetryableDtoretryableDto){log.error("DLT处置程序信息:{}",retryableDto);}

留意事项

只管经常使用RetryableTopic的异步处置长处为咱们带来了性能优化,但这种经常使用也有一些缺陷。

经常使用RetryableTopic或者会破坏信息的处置顺序。

让咱们用一个例子来解释这种状况:当主主题在时期t处置时,一条信息出错并被发送到重试主题。在时期t+1时,另一条信息到来主主题并成功处置。让咱们在重试主题中的信息在时期t+2时被成功处置。在这种状况下,第一条传入信息将在第二条信息之后处置。假设订购对您很关键,我倡导您在信息处置环节中启动必要的审核。

另一个缺陷是信息双重处置的危险。您可以经过思考这种或者性来启动改良。


springboot往kafka写数据,如果事先topic未创建,后续创建会影响写入吗

Topic

不会。 springboot往kafka写数据,调用kafkaTemplate的send,发去的topic如果没有,会自动创建,默认是一个partition、一个replicas的。 不会影响后续的写入。

springboot往kafka写数据,如果事先topic未创建,后续创建会影响写入吗

不会。 springboot往kafka写数据,调用kafkaTemplate的send,发去的topic如果没有,会自动创建,默认是一个partition、一个replicas的。 不会影响后续的写入。

免责声明:本文转载或采集自网络,版权归原作者所有。本网站刊发此文旨在传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及版权、内容等问题,请联系本网,我们将在第一时间删除。同时,本网站不对所刊发内容的准确性、真实性、完整性、及时性、原创性等进行保证,请读者仅作参考,并请自行核实相关内容。对于因使用或依赖本文内容所产生的任何直接或间接损失,本网站不承担任何责任。

标签: Spring

“极致便当与卓越容错-Topic-Spring-重试-成功-运用-Kafka (极致餐是什么意思)” 的相关文章

概念-Spring-AOP-实现原理和应用-中的 (概念股股票)

概念-Spring-AOP-实现原理和应用-中的 (概念股股票)

什么是AOP? AOP(Aspect-Oriented Programming,面向切面编程)是一种编程范式,其主要目的是将横切关注点(cross-cutting concern)从主要业务...

Spring-释放数据传输潜力的数据压缩技术-微服务 (springboot启动)

Spring-释放数据传输潜力的数据压缩技术-微服务 (springboot启动)

简介 随着云原生架构的兴起,微服务已成为可扩展和可维护系统的重要构建块。顾名思义,微服务是小型的、独立的服务,它们共同构成一个完整的系统。当使用微服务构建系统时,尤其是那些具有大量数据交换的系统...

如何在Spring名目中顺利性能MP-MyBatis (如何在springer上下载文献)

如何在Spring名目中顺利性能MP-MyBatis (如何在springer上下载文献)

在Spring名目中集成MP,须要启动以下性能: 1.引入依赖:在名目标pom.xml文件中参与MP相关依赖,例如:```xml<dependency><groupId&g...

比如每日有大量用户访问和数据替换-服务器的带宽需求与网站的访问量密切相关-那么就须要更大的带宽来满足需求-访问量-假设你的网站流量大 (比如每日有大事的句子)

比如每日有大量用户访问和数据替换-服务器的带宽需求与网站的访问量密切相关-那么就须要更大的带宽来满足需求-访问量-假设你的网站流量大 (比如每日有大事的句子)

SpringBeanDefinition元信息定义形式 BeanDefinition是一个蕴含Bean元数据的对象。它形容了如何创立Bean实例、Bean属性的值以及Bean之间的依赖相关。...

Security权限控制框架入门指南-Spring (security)

Security权限控制框架入门指南-Spring (security)

在罕用的后盾治理系统中,通常都会有访问权限控制的需求,用于限度不同人员关于接口的访问才干,假设用户不具有指定的权限,则不能访问某些接口。 本文将用waynboot-mall名目举例,给大家引...

Boot-Spring-与-3.0-加速应用性能的完美融合-GraalVM (bootstrap)

Boot-Spring-与-3.0-加速应用性能的完美融合-GraalVM (bootstrap)

在 2023 年,SpringBoot 3.0 的发布标志着 Spring 框架对 GraalVM 的全面支持。此支持对 Spring 技术栈来说是一项重大补充。 GraalVM 概述...

Spring-Webflux-Boot-虚构线程性能逊色于-深化比较 (springboot)

Spring-Webflux-Boot-虚构线程性能逊色于-深化比较 (springboot)

早上看到一篇关于SpringBoot虚构线程和Webflux性能对比的文章,感觉还不错。内容较长,抓重点给大家引见一下这篇文章的外围内容,繁难大家极速浏览。 测试场景 作者驳回了一个尽...

容器启动有效的交互-Spring-如何利用-框架提供的才干-让-Bean-深化了解并与-Spring (容器启动过程)

容器启动有效的交互-Spring-如何利用-框架提供的才干-让-Bean-深化了解并与-Spring (容器启动过程)

Spring有一个特点,就是创立进去的Bean对容器是无感的,一个Bean是怎样样被容器从一个Class整成一个Bean的,关于Bean自身来说是不知道的,当然也不须要知道,也就是Bean对容器的...